Requête Sur trois Tables

tallest17 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour

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

Cordialement, 
Jordane                                                                 
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
tallest17 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > tallest17 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > tallest17 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Heu....
Si dans aucun groupe ... alors ... forcément il n'est pas dans le groupe 2 .... cqfd !
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Si CG.group_id IS NULL ... alors il est FORCEMENT différent de 2 :-)
0