Page 1 sur 1

subquery inside IN

Posté : 12 août 2016, 12:53
par salttaste
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

Re: subquery inside IN

Posté : 12 août 2016, 12:56
par salttaste
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...

Re: subquery inside IN

Posté : 12 août 2016, 14:15
par @rthur
Bonjour,

As tu testé tes requêtes séparément puis ensemble dans phpmyadmin ?

Re: subquery inside IN

Posté : 16 août 2016, 15:24
par salttaste
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

Re: subquery inside IN

Posté : 16 août 2016, 16:25
par salttaste
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