Requête Sur trois Tables

Fermé
tallest17 Messages postés 27 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 22 février 2019 - Modifié le 6 nov. 2017 à 10:43
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 - 9 nov. 2017 à 17:48
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 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 6 nov. 2017 à 11:21
Bonjour

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

Cordialement, 
Jordane                                                                 
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
6 nov. 2017 à 14:08
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 jeudi 10 novembre 2016 Statut Membre Dernière intervention 22 février 2019 > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
9 nov. 2017 à 16:39
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 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > tallest17 Messages postés 27 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 22 février 2019
Modifié le 9 nov. 2017 à 17:29
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 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > tallest17 Messages postés 27 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 22 février 2019
9 nov. 2017 à 17:20
Heu....
Si dans aucun groupe ... alors ... forcément il n'est pas dans le groupe 2 .... cqfd !
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024
9 nov. 2017 à 17:21
Si CG.group_id IS NULL ... alors il est FORCEMENT différent de 2 :-)
0