Salut

Je suis face à un problème de conception.

J'ai une table qui rassemble des découpages géographiques (pays, rgion, département....) de cette manière : un id_decoup, un nom_decoup, un type_decoup et un id_decoup_parent.

Ensuite j'ai une table de zone : id_zone, nom_zone.
Ensuite j'ai une table de contenu de zone qui fait le lien entre les deux premières : id_zone, id_decoup, effet.

Mon souci vient maintenant : je voudrais trouver tous les id_decoup qui sont défini dans la table de contenu sauf ceux pour qui la collone "effet" est à 1 (la valeur par défaut étant 0).

J'en suis à cette requête là, mais ça marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
SELECT * from 
(select distinct DC.id_zone, DC.nom_zone from zone_contenu C
inner join zone_test DP on dp.id_zone = C.id_Decoupage
inner join zone_test DR on dr.id_zone = C.id_Decoupage or DR.zone_Parent = DP.id_zone 
inner join zone_test DD on dd.id_zone = C.id_Decoupage or DD.zone_Parent = DR.id_zone 
inner join zone_test DA on da.id_zone = C.id_Decoupage or DA.zone_Parent = DD.id_zone
inner join zone_test DC on dc.id_zone = C.id_Decoupage or DC.zone_Parent = DA.id_zone
where c.id_zone = 4
and DC.type_zone = 5
and C.Effet = 0) as T1
 
left join 
(select distinct DC.id_zone, DC.nom_zone from zone_contenu C
inner join zone_test DP on dp.id_zone = C.id_Decoupage
inner join zone_test DR on dr.id_zone = C.id_Decoupage or DR.zone_Parent = DP.id_zone 
inner join zone_test DD on dd.id_zone = C.id_Decoupage or DD.zone_Parent = DR.id_zone 
inner join zone_test DA on da.id_zone = C.id_Decoupage or DA.zone_Parent = DD.id_zone
inner join zone_test DC on dc.id_zone = C.id_Decoupage or DC.zone_Parent = DA.id_zone
where c.id_zone = 4
and DC.type_zone = 5
and C.Effet = 1) as T2
on T2.id_zone = T1.id_zone AND T2.id_zone is null
J'obtiens 57 lignes, alors qu'il ne m'en faut que 56. Dans ma table de zone contenu j'ai mis 1 pour le id de St Nazaire

Pouvez vous m'aider ?