Requete SQL

Résolu
Locki Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   -  
Locki Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   -
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

fjbvqlkjhv
 
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   Statut Membre Dernière intervention   13
 
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
fjbvqlkjhv
 
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
fjbvqlkjhv
 
Sinon il te reste le union...
0
Locki Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   13
 
SUPER :) ça marche ....
Merci à toi
0