Requete SQL

Résolu/Fermé
Locki Messages postés 198 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 2 juillet 2013 - 17 déc. 2012 à 10:00
Locki Messages postés 198 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 2 juillet 2013 - 17 déc. 2012 à 11:09
Bonjour,

J'ai 3 tables (groupe, eleves et group_has_eleve). Un groupe peut avoir plusieurs élèves et un élève peut être dans plusieurs groupe. Relation N-N -> table intermédiaire

Ma question:
Je voudrais afficher tous les groupes qui contiennent 2 élèves spécifiques:
SELECT groupe_name, eleve_name FROM groupe
INNER JOIN group_has_eleve ON id_groupe = fk_groupe
INNER JOIN eleves ON id_eleve = fk_eleve
WHERE eleve_name = 'toto' OR eleve_name = 'titi'

Cette requête m'affiche aussi des groupes qui ne contiennent qu'un seul des 2 élèves (à cause du OR), alors que moi je veux seulement les groupes qui contiennent toto et titi.

Comment faire?

1 réponse

Salut,

Il faut que tu utilises un AND au lieu du OR non ?

Edit : betises voir en dessous ;)
0
Locki Messages postés 198 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 2 juillet 2013 13
17 déc. 2012 à 10:07
Non, du coup il ne me retourne aucun résultat. En effet, il n'y a aucun élève qui a le nom "toto" et qui en même temps a le nom "titi"
0
Exact...mille excuses.

Essai ca :

SELECT groupe_name
FROM
(SELECT DISTINCT groupe_name, eleve_name
FROM groupe
INNER JOIN group_has_eleve ON id_groupe = fk_groupe
INNER JOIN eleves ON id_eleve = fk_eleve
WHERE eleve_name IN ('titi', 'toto')) tabTemp
GROUP BY groupe_name
HAVING COUNT(*) = 2
0
Sinon il te reste le union...
0
Locki Messages postés 198 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 2 juillet 2013 13
17 déc. 2012 à 11:09
SUPER :) ça marche ....
Merci à toi
0