Requête Sur trois Tables

tallest17 Messages postés 29 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je travaille avec trois tables l'une d'entre elles est une table association pour les deux autres

contacts
groups
contact_group (table association)

Je veux faire une requête pour afficher les contacts qui ne sont pas dans un groupe donné (group_id=2) par exemple et les contacts qui n'ont aucun groupe

Merci a tous

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour

    Un jointure left (enfin 2)
    Et un where
    Et le tour est joué

    Cordialement, 
    Jordane                                                                 
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Un truc du genre

      Pas dans le groupe 2

      SELECT C.*
      FROM contact_group CG
      LEFT JOIN contacts C ON C.id = CG.id_contact
      WHERE CG.group_id <> 2
      

      Ou ceux qui Sont dans un groupe mais dans le 2
      SELECT C.*
      FROM contact_group CG
      LEFT JOIN contacts C ON C.id = CG.id_contact
      WHERE CG.group_id <> 2
       AND CG.group_id IS NOT NULL
      

      Dans aucun groupe

      SELECT C.*
      FROM contacts C
      LEFT JOIN contact_group CG ON C.id = CG.id_contact
      WHERE CG.group_id  IS NULL
      

      Ou encore avec une sous-requête
      SELECT C.*
      FROM contacts C
      WHERE id NOT IN (
       SELECT DISTINCT id_contact
       FROM contact_group
      ) 
      
      0
    2. tallest17 Messages postés 29 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Merci pour la réponse
      Mais Comment puis combiner les deux requêtes
      "pas dans le groupe 2" et "dans aucun groupe"
      Merci a tous...
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > tallest17 Messages postés 29 Statut Membre
       
      bonjour, suggestion:
      SELECT C.*
      FROM contact_group CG
      RIGHT JOIN contacts C ON C.id = CG.id_contact
      WHERE CG.group_id <> 2
       OR CG.group_id IS NULL
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > tallest17 Messages postés 29 Statut Membre
       
      Heu....
      Si dans aucun groupe ... alors ... forcément il n'est pas dans le groupe 2 .... cqfd !
      0
    5. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Si CG.group_id IS NULL ... alors il est FORCEMENT différent de 2 :-)
      0