[RESOLU] subquery inside IN

salttaste
Invité n'ayant pas de compte PHPfrance

12 août 2016, 12:53

Bonjours à tous,

J'ai un problème de subquery dans un IN.

Si j’exécute ce code, j'ai en retour une seul record :
"SELECT DISTINCT(g.uid), g.title FROM `fe_users` u, `fe_groups` g WHERE g.uid IN(SELECT usergroup FROM `fe_users` WHERE uid = 10)".

Normalement ceci "SELECT usergroup FROM `fe_users` WHERE uid = 10" retourne la valeur "1,4,17,101,102,103,114,115".

Et si je fais "SELECT DISTINCT(g.uid), g.title FROM `fe_users` u, `fe_groups` g WHERE g.uid IN(1,4,17,101,102,103,114,115)" alors ça fonctionne, quelqu'un a une idée ?

Merci

salttaste
Invité n'ayant pas de compte PHPfrance

12 août 2016, 12:56

J'ai simplifié la requet : "SELECT uid, title FROM `fe_groups` WHERE uid IN(SELECT usergroup FROM fe_users WHERE uid = 10)"

Mais ça marche pas non plus...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

12 août 2016, 14:15

Bonjour,

As tu testé tes requêtes séparément puis ensemble dans phpmyadmin ?
Quand tout le reste a échoué, lisez le mode d'emploi...

salttaste
Invité n'ayant pas de compte PHPfrance

16 août 2016, 15:24

Bonjour @rthur , oui si je test la requête dans phpMyadmin et j'obtiens le même résultat que dans mon script PHP.

je pense que le select dans le IN() ne retourne que le premier reccord du résultat. Il comprend pas qu'il doit faire une sorte de "while" sur le résultat.

Merci en tout cas d'avoir répondu :D

salttaste
Invité n'ayant pas de compte PHPfrance

16 août 2016, 16:25

FYI, j'ai trouvé la solution avec la fonction "FIND_IN_SET".

SELECT uid, title FROM `fe_groups` WHERE FIND_IN_SET (`uid`,( SELECT usergroup FROM fe_users WHERE uid = 10 )) >0