Salut à toutes et à tous,
Soit 2 tables PostgreSQL composées comme les exemples ci-dessous :
Table 1 : reno_nouv_lots
num_nouv_lot | num_mandat
----------------------------
3662493 | 2305
3662494 | 2305
3662495 | 2305
3662496 | 2305
3662497 | 2305
3662498 | 2305
3662499 | 2305
...
3754186 | 2791
3754187 | 2791
3754188 | 2791
Table 2 : reno_rafas_lots_concernes
rafa_id | num_nouv_lot
----------------------
2 | 3662495
2 | 3662496
2 | 3662498
1 | 3662496
1 | 3662497
J'ai écris le code suivant qui me retourne presque ce dont j'ai besoin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT reno_nouv_lots.num_nouv_lot FROM reno_nouv_lots LEFT OUTER JOIN reno_rafas_lots_concernes ON reno_nouv_lots.num_nouv_lot=reno_rafas_lots_concernes.num_nouv_lot GROUP BY reno_nouv_lots.num_nouv_lot, num_mandat, rafa_id HAVING (num_mandat='2305' AND (rafa_id is null or rafa_id<>'2'));
Pourquoi me retourne-t-il presque ce dont j'ai besoin ?
Parce que j'ai besoin de tous les num_nouv_lots pour un num_mandat particulier qui ne sont pas dans la table reno_rafas_lots_concernes pour un rafa_id particulier.
Le résultat obtenu par ce code est :
num_nouv_lot
-------------
3662493
3662494
3662496
3662497
3662499
3662500
...
Comme vous pouvez voir, tous les num_nouv_lot du num_mandat 2305 qui ne sont pas repris dans reno_rafas_lots_concernes vont effectivement sortir, tous ceux dont le rafa_id est différent de 2 aussi, mais comme le 3662496 est attribué aux rafas 1 ET 2, il sort aussi. C'est logique, mais ça me gêne énormément.
Il me faudrait tous les num_nouv_lot d'un num_mandat particulier et qui ne sont pas attribués à un rafa_id particulier dans reno_rafas_lots_concernes.
Le résultat recherché est :
num_nouv_lot
-------------
3662493
3662494
3662497
3662499
3662500
...
Je cherche depuis un bon moment et je ne trouve pas la solution, aussi je fais appel à votre science pour m'aider.
Merci de vos z'avis z'avisé,
Jean-Marc
Partager