PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → jointure Urgent
jointure Urgent
Débuté par bmalisan, 24 fév. 2006 09:55 - 8 réponses
Posté le 24 février 2006 - 09:55
bonjour à tous ,
Je suis dans .....
prb de jointure LEFT OUTER JOIN le 2eme
j'ai vu les autres messages à ce propos mais tjs prb en sachant que sous SQL
cela fonctionne...
voiçi la requete
SELECT EKKO.EBELN AS EBELN,
EKKO.LIFNR AS LIFNR,
EKKO.KDATE AS KDATE,
EKPO.MATNR AS MATNR,
EKPO.KONNR AS KONNR,
EKPO.KTMNG AS KTMNG,
EKPO.MATKL AS MATKL,
EKPO.EBELN AS EBELN,
EKPO.MENGE AS MENGE,
EKPO.TXZ01 AS TXZ01,
EKPO.NETPR AS NETPR,
EKPO.PEINH AS PEINH,
EKPO.BPRME AS BPRME,
LFA1.NAME1 AS NAME1,
KONM.KSTBM AS KSTBM
FROM EKKO,LFA1,EKPO
LEFT OUTER JOIN KONH ON ((EKPO.EBELN + EKPO.EBELP) = LEFT(KONH.VAKEY,15))
LEFT OUTER JOIN KONM ON (EKPO.NETPR = KONM.KBETR) AND (KONH.KNUMH = KONM.KNUMH)
where EKKO.KDATE >={param1}
AND EKKO.BUKRS = {param2}
AND EKKO.MANDT = EKPO.MANDT
AND EKKO.MANDT = LFA1.MANDT
AND EKKO.LIFNR = LFA1.LIFNR
AND (EKKO.EBELN = EKPO.EBELN or EKKO.EBELN = EKPO.KONNR)
order by EKPO.MATKL,EKPO.MATNR,EKKO.EBELN
merci pour votre aide
bruno
Posté le 24 février 2006 - 11:56
en fait Windev ne permet pas plus d'une jointure optionnelle à la fois,
donc essaye de scinder ta requète en "sous-requète"

voici le code pour te mettre sur la voie...
création d'une sous-requète Lien1
puis jointure avec ta dernière table

Select
LIEN1.EBELN,
LIEN1.LIFNR,
LIEN1.KDATE,
LIEN1.MATNR,
LIEN1.KONNR,
LIEN1.KTMNG,
LIEN1.MATKL,
LIEN1.EBELN,
LIEN1.MENGE,
LIEN1.TXZ01,
LIEN1.NETPR,
LIEN1.PEINH,
LIEN1.BPRME,
LIEN1.NAME1,
KONM.KSTBM AS KSTBM
From
(
SELECT EKKO.EBELN AS EBELN,
EKKO.LIFNR AS LIFNR,
EKKO.KDATE AS KDATE,
EKPO.MATNR AS MATNR,
EKPO.KONNR AS KONNR,
EKPO.KTMNG AS KTMNG,
EKPO.MATKL AS MATKL,
EKPO.EBELN AS EBELN,
EKPO.MENGE AS MENGE,
EKPO.TXZ01 AS TXZ01,
EKPO.NETPR AS NETPR,
EKPO.PEINH AS PEINH,
EKPO.BPRME AS BPRME,
LFA1.NAME1 AS NAME1
FROM EKKO,LFA1,EKPO
LEFT OUTER JOIN KONH ON ((EKPO.EBELN + EKPO.EBELP) = LEFT(KONH.VAKEY,15))
where EKKO.KDATE >={param1}
AND EKKO.BUKRS = {param2}
AND EKKO.MANDT = EKPO.MANDT
AND EKKO.MANDT = LFA1.MANDT
AND EKKO.LIFNR = LFA1.LIFNR
AND (EKKO.EBELN = EKPO.EBELN or EKKO.EBELN = EKPO.KONNR)
order by EKPO.MATKL,EKPO.MATNR,EKKO.EBELN) LIEN1
LEFT OUTER JOIN KONM ON (LIEN1.NETPR = KONM.KBETR) AND (LIEN1.KNUMH = KONM.KNUMH)
Posté le 24 février 2006 - 14:26
Serge Miéville a formulé ce vendredi :
en fait Windev ne permet pas plus d'une jointure optionnelle à la fois,
donc essaye de scinder ta requète en "sous-requète"


oui il sait le faire mais il faut utiliser une syntaxe particulière pas
terrible
SELECT *
FROM MaTable LEFT OUTER JOIN ......
MaTable LEFT OUTER JOIN ....
etc....
WHERE ....

essayez ceci "MaTable" doit être replacer par la bonne valeur evidement
dans la clause FROM

SELECT EKKO.EBELN AS EBELN,
EKKO.LIFNR AS LIFNR,
EKKO.KDATE AS KDATE,
EKPO.MATNR AS MATNR,
EKPO.KONNR AS KONNR,
EKPO.KTMNG AS KTMNG,
EKPO.MATKL AS MATKL,
EKPO.EBELN AS EBELN,
EKPO.MENGE AS MENGE,
EKPO.TXZ01 AS TXZ01,
EKPO.NETPR AS NETPR,
EKPO.PEINH AS PEINH,
EKPO.BPRME AS BPRME,
LFA1.NAME1 AS NAME1,
KONM.KSTBM AS KSTBM
FROM EKKO,LFA1,EKPO
"MaTable" LEFT OUTER JOIN KONH ON ((EKPO.EBELN + EKPO.EBELP) =
LEFT(KONH.VAKEY,15))
"MaTable" LEFT OUTER JOIN KONM ON (EKPO.NETPR = KONM.KBETR) AND
(KONH.KNUMH = KONM.KNUMH)
where EKKO.KDATE >={param1}
AND EKKO.BUKRS = {param2}
AND EKKO.MANDT = EKPO.MANDT
AND EKKO.MANDT = LFA1.MANDT
AND EKKO.LIFNR = LFA1.LIFNR
AND (EKKO.EBELN = EKPO.EBELN or EKKO.EBELN = EKPO.KONNR)
order by EKPO.MATKL,EKPO.MATNR,EKKO.EBELN

--
Cordialement JeAn-PhI
Posté le 24 février 2006 - 15:17
Bonjour Jean_Phi,
Ce la ne fonctionne pas blocage sur le left...

par contre comment fait-on une sous requète ...

merci pour votre aide....
bruno
Posté le 24 février 2006 - 15:32
le code que je t'ais donné ne fonctionne pas ?!
Posté le 24 février 2006 - 18:03
MANQUE PAS : FROM KONM ?
Posté le 25 février 2006 - 19:30
Bonjour à tous,

Charles a quel endroit il manque le FROM KONM
@+
Posté le 27 février 2006 - 08:41
abflm a écrit :
Bonjour à tous,

Charles a quel endroit il manque le FROM KONM
@+

SELECT EKKO.EBELN AS EBELN,
EKKO.LIFNR AS LIFNR,
EKKO.KDATE AS KDATE,
EKPO.MATNR AS MATNR,
EKPO.KONNR AS KONNR,
EKPO.KTMNG AS KTMNG,
EKPO.MATKL AS MATKL,
EKPO.EBELN AS EBELN,
EKPO.MENGE AS MENGE,
EKPO.TXZ01 AS TXZ01,
EKPO.NETPR AS NETPR,
EKPO.PEINH AS PEINH,
EKPO.BPRME AS BPRME,
LFA1.NAME1 AS NAME1,
KONM.KSTBM AS KSTBM

A cet endroit il manque un KONM
FROM EKKO,LFA1,EKPO, "KONM"


LEFT OUTER JOIN KONH ON ((EKPO.EBELN + EKPO.EBELP) = LEFT(KONH.VAKEY,15))
LEFT OUTER JOIN KONM ON (EKPO.NETPR = KONM.KBETR) AND (KONH.KNUMH = KONM.KNUMH)
where EKKO.KDATE >={param1}
AND EKKO.BUKRS = {param2}
AND EKKO.MANDT = EKPO.MANDT
AND EKKO.MANDT = LFA1.MANDT
AND EKKO.LIFNR = LFA1.LIFNR
AND (EKKO.EBELN = EKPO.EBELN or EKKO.EBELN = EKPO.KONNR)
order by EKPO.MATKL,EKPO.MATNR,EKKO.EBELN
Posté le 27 février 2006 - 09:20
bonjour ,
Cela ne fontionne pas ...
je vais essayer une sous requète...
merci @+