sous V7R1
Une table TABLE1 contient l'index primaire : CLE et le champ : CODE
Une table TABLE2 (dite : de correspondance) contient un index primaire et les données : CHAMP1, CHAMP2155,A
542,B
136,B
852,B
CHAMP1 est renseigné par CLE de TABLE1, et CHAMP2 pointe sur une CLE de TABLE1
Je cherche à sélectionner les enregistrements de TABLE1 dont le CODE est A et pour lesquels il existe une correspondance (CHAMP1 vers CHAMP2) dans TABLE2,001,155,542
et les enregistrements de TABLE1 dont le CODE est B ayant une correspondance (CHAMP2 vers CHAMP1) dans TABLE2 .
J'essaie ceci :155,A
542,B
Auriez-vous plus simple ?select *
from TABLE1 p
left join TABLE2 l
on l.CHAMP2= p.CLE
where
(p.CODE = 'A'
and l.CHAMP2in (select pp.CLE
from TABLE1 pp
where pp.CODE = l.CHAMP2
and pp.CODE= 'B')
)
or
(p.CODE = 'B'
and p.CLE in (select ll.CHAMP2
from TABLE2 ll
left join TABLE1 ppp
on ll.CHAMP1 = ppp.CLE
where ppp.CODE = 'A')
)
merci de vos réponses.