Requête SQL INNER JOIN + IN

Résolu/Fermé
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 - 22 sept. 2015 à 17:53
 Utilisateur anonyme - 23 sept. 2015 à 23:20
Bonjour,
j'essaye de faire une requête SQL avec une jointure plus une condition IN mais ça ne fonctionne pas...
Voilà ma requête :

$listeID = implode(',', $liste);

$sql = "SELECT * FROM users INNER JOIN comments ON (users.ID = comments.IDC) AND comments.IDC IN ('$listeID');";

$reqf = $bdd->query($sql);

while($donnees = $reqf->fetch())
{
echo $donnees['ID'];
}

Où $liste est un array.
J'ai aussi essayé avec une requête préparée, mais rien à faire, ça ne m'affiche rien...

Voyez-vous une erreur dans ma requête ?

Merci d'avance pour vos réponses !

2 réponses

Utilisateur anonyme
23 sept. 2015 à 00:30
Bonjour

Oui, il y a une erreur dans ta requête.

La liste contenue dans ton IN a un seul élément. Je précise : si par exemple ton tableau $liste contenait les trois nombres 1, 2 et 3
Alors le résultat du implode est 1,2,3
et ta requête est :
... comments.IDC IN ('1,2,3')
.
Cette condition n'est satisfaite que si comments.IDC vaut exactement '1,2,3'.

Je suppose qu'en fait tu voulais
... comments.IDC IN (1,2,3)
: il ne fallait pas mettre d'apostrophes.

Maintenant, si ta liste comportait des textes, comme aa,bb et cc, la requête que tu veux est
... comments.IDC IN ('aa','bb','cc')
.
Il faut bien des apostrophes cette fois, mais il en faut AUSSI au niveau de chaque virgule, ce qui est facile à obtenir avec le implode :
$listeID = implode("','", $liste);
0
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
23 sept. 2015 à 18:20
Oui c'était bien ça !
Merci beaucoup pour ton aide !
0
Utilisateur anonyme
23 sept. 2015 à 23:20
De rien :-)
0