CodeIgniter: LEFT JOIN dans $this->db->query renvoie une erreur de base de données
J'ai besoin d'exclure le deuxième requête (données à partir d'un deuxième tableau) similaire à MOINS. Mais depuis MySQL ne supporte pas MOINS, j'ai décidé d'aller avec une JOINTURE GAUCHE. Cependant, il me donne une erreur de base de données.
Modèle
function searchRooms($room_type, $start_date, $end_date) {
//Line 6 is the below one:
$query = $this->db->query(
"SELECT room_number
FROM rooms
WHERE room_type = '$room_type'
ORDER BY room_number ASC
LEFT JOIN
SELECT room_number
FROM new_reservation
WHERE start_date >= '$start_date'
AND end_date <= '$end_date'
ORDER BY room_number ASC
");
return $query->result();
}
Contrôleur
function search() {
$room_type = $this->input->post('room_type');
$start_date = $this->input->post('start_date');
$end_date = $this->input->post('end_date');
$this->reservations_model->searchRooms($room_type, $start_date, $end_date);
$this->index();
}
Vous devez vous connecter pour publier un commentaire.
si vous souhaitez exclure un résultat à partir de la deuxième requête puis
À l'aide de rejoindre la place de la sous-requête
De nouveau si vous ne voulez pas utiliser de vue intégrée de
Votre syntaxe pour un
LEFT JOIN
est faux, il doit être quelque chose dans la forme de:Ou vous êtes à la recherche d'un
UNION
au lieu d'unLEFT JOIN
?Bien que dans votre cas, vous pourriez probablement simplement inverser les conditions de la seconde requête et de l'utiliser comme un
WHERE
condition dans la première requête (si je vous comprends bien...).Dans MySQL, vous REJOIGNEZ les tables, pas les instructions SELECT. LEFT JOIN est utilisé lors de la table jointe ne peut pas avoir une ligne correspondante dans il.
Vous voulez vous JOINDRE et ne sélectionner que les lignes que vous voulez.
Essayez ceci:
Dans le codeigniter Vous pouvez utiliser comme cette
C'est la syntaxe que j'utilise dans mon application