Requete SQL

Résolu
Locki Messages postés 225 Statut Membre -  
Locki Messages postés 225 Statut Membre -
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

  1. fjbvqlkjhv
     
    Salut,

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

    Edit : betises voir en dessous ;)
    0
    1. Locki Messages postés 225 Statut Membre 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
    2. 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
    3. fjbvqlkjhv
       
      Sinon il te reste le union...
      0
    4. Locki Messages postés 225 Statut Membre 13
       
      SUPER :) ça marche ....
      Merci à toi
      0