Optimisation sql ?

RPG (3 et 4, free), CL, SQL, etc...
Répondre
germor
Messages : 75
Enregistré le : lun. 06 juin 2011, 08:01:43

Optimisation sql ?

Message par germor »

Bonjour,

sous V7R1
Une table TABLE1 contient l'index primaire : CLE et le champ : CODE
155,A
542,B
136,B
852,B
Une table TABLE2 (dite : de correspondance) contient un index primaire et les données : CHAMP1, CHAMP2

CHAMP1 est renseigné par CLE de TABLE1, et CHAMP2 pointe sur une CLE de TABLE1
001,155,542
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,
et les enregistrements de TABLE1 dont le CODE est B ayant une correspondance (CHAMP2 vers CHAMP1) dans TABLE2 .
155,A
542,B
J'essaie ceci :
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')
)
Auriez-vous plus simple ?
merci de vos réponses.

patrick.rabin
Messages : 4
Enregistré le : lun. 28 mars 2011, 13:32:55
Localisation : Carquefou Cedex( 44473)

optimisation sql

Message par patrick.rabin »

Bonjour,
je ne suis pas sûr d'avoir tout compris, mais ne pourrais-tu pas essayer qqchose comme ceci :
select * from TABLE1 p
where exists
(select 1 from TABLE2 pp
where p.CLE = pp.CHAMP1)

Cdlt
Patrick

germor
Messages : 75
Enregistré le : lun. 06 juin 2011, 08:01:43

(sujet non précisé)

Message par germor »

Merci,
J'ai essayé mais ça ne retourne que la 1ere ligne : 155,A

Répondre