Maison  >  Questions et réponses  >  le corps du texte

Changer la requête SQL {oj } en syntaxe SQL normale

Puis-je vous demander de m'aider à convertir cette syntaxe SQL {oj } en syntaxe de jointure normale ?

SELECT
...
FROM
 {oj (((((((((("VMPH" "VMPH" LEFT OUTER JOIN "VMPT" "VMPT" ON "VMPH"."NMPSTID"="VMPT"."NMPSTID")
 LEFT OUTER JOIN "ARRTA" "ARRTA" ON "VMPH"."TXTERM"="ARRTA"."CODETERM")
 LEFT OUTER JOIN "VMAGRE" "VMAGRE" ON "VMPH"."NMAGRE"="VMAGRE"."NMDOCID")
 LEFT OUTER JOIN "VMDH" "VMDH" ON "VMPH"."NMDOCID"="VMDH"."NMDOCID")
 LEFT OUTER JOIN "VMPTIT" "VMPTIT" ON ("VMPT"."NMPSTID"="VMPTIT"."NMPSTID") AND ("VMPT"."WDTRANNUM"="VMPTIT"."WDTRANNUM"))
 LEFT OUTER JOIN "VMPTSV" "VMPTSV" ON ("VMPT"."NMPSTID"="VMPTSV"."NMPSTID") AND ("VMPT"."WDTRANNUM"="VMPTSV"."WDTRANNUM"))
 LEFT OUTER JOIN "VMPTEQ" "VMPTEQ" ON ("VMPT"."NMPSTID"="VMPTEQ"."NMPSTID") AND ("VMPT"."WDTRANNUM"="VMPTEQ"."WDTRANNUM"))
 LEFT OUTER JOIN "VMDTEQ" "VMDTEQ" ON ("VMPT"."NMDOCID"="VMDTEQ"."NMDOCID") AND ("VMPT"."WDDTTRNUM"="VMDTEQ"."WDTRANNUM"))
 LEFT OUTER JOIN "VMMTRM" "VMMTRM" ON ("VMPTEQ"."TXEQUP"="VMMTRM"."TXEQUP") AND ("VMPTEQ"."TXMETER"="VMMTRM"."TXMETER"))
 LEFT OUTER JOIN "VMEQUP" "VMEQUP" ON ("VMPTEQ"."TXEQUP"="VMEQUP"."TXEQUP"))
 LEFT OUTER JOIN "VMSERV" "VMSERV" ON ("VMPTSV"."WDSERVTYPE"="VMSERV"."WDTYPE") AND ("VMPTSV"."TXSERV"="VMSERV"."TXSERV")}

J'ai essayé de retirer les parenthèses et "oj" mais ça ne marche pas. J'ai essayé ce qui suit mais cela n'a pas bien fonctionné

SELECT
...
WHERE
"VMPH"."NMPSTID" = "VMPT"."NMPSTID"
 AND "VMPH"."TXTERM" = "ARRTA"."CODETERM"
 AND "VMPH"."NMAGRE" = "VMAGRE"."NMDOCID"
 AND "VMPH"."NMDOCID" = "VMDH"."NMDOCID"
 AND (("VMPT"."NMPSTID" = "VMPTIT"."NMPSTID") AND ("VMPT"."WDTRANNUM" = "VMPTIT"."WDTRANNUM"))
 AND (("VMPT"."NMPSTID" = "VMPTSV"."NMPSTID") AND ("VMPT"."WDTRANNUM" = "VMPTSV"."WDTRANNUM"))
 AND (("VMPT"."NMPSTID"="VMPTEQ"."NMPSTID") AND ("VMPT"."WDTRANNUM"="VMPTEQ"."WDTRANNUM"))
 AND (("VMPT"."NMDOCID"="VMDTEQ"."NMDOCID") AND ("VMPT"."WDDTTRNUM"="VMDTEQ"."WDTRANNUM"))
 AND (("VMPTEQ"."TXEQUP"="VMMTRM"."TXEQUP") AND ("VMPTEQ"."TXMETER"="VMMTRM"."TXMETER"))
 AND "VMPTEQ"."TXEQUP" = "VMEQUP"."TXEQUP"
 AND (("VMPTSV"."WDSERVTYPE"="VMSERV"."WDTYPE") AND ("VMPTSV"."TXSERV"="VMSERV"."TXSERV"))

P粉030479054P粉030479054408 Il y a quelques jours604

répondre à tous(1)je répondrai

  • P粉662089521

    P粉6620895212023-09-07 22:39:52

    Dans MySQL, si un identifiant (c'est-à-dire le nom de la table, le nom de la colonne) est un mot réservé, il doit être entouré de guillemets, et le vôtre ne l'est ni l'un ni l'autre, donc les guillemets doubles peuvent être perdus. De plus, l'alias attribué par oj (quel qu'il soit) n'est pas particulièrement utile, je vais donc perdre ces alias et parenthèses. Par exemple

    SELECT *
    FROM  VMPH  
     LEFT OUTER JOIN VMPT  ON VMPH.NMPSTID=VMPT.NMPSTID
     LEFT OUTER JOIN ARRTA ON VMPH.TXTERM=ARRTA.CODETERM
     LEFT OUTER JOIN VMAGRE ON VMPH.NMAGRE=VMAGRE.NMDOCID
     LEFT OUTER JOIN VMDH  ON VMPH.NMDOCID=VMDH.NMDOCID
     LEFT OUTER JOIN VMPTIT ON VMPT.NMPSTID=VMPTIT.NMPSTID AND VMPT.WDTRANNUM=VMPTIT.WDTRANNUM
     LEFT OUTER JOIN VMPTSV ON VMPT.NMPSTID=VMPTSV.NMPSTID AND VMPT.WDTRANNUM=VMPTSV.WDTRANNUM
     LEFT OUTER JOIN VMPTEQ ON VMPT.NMPSTID=VMPTEQ.NMPSTID AND VMPT.WDTRANNUM=VMPTEQ.WDTRANNUM
     LEFT OUTER JOIN VMDTEQ ON VMPT.NMDOCID=VMDTEQ.NMDOCID AND VMPT.WDDTTRNUM=VMDTEQ.WDTRANNUM
     LEFT OUTER JOIN VMMTRM ON VMPTEQ.TXEQUP=VMMTRM.TXEQUP AND VMPTEQ.TXMETER=VMMTRM.TXMETER
     LEFT OUTER JOIN VMEQUP ON VMPTEQ.TXEQUP=VMEQUP.TXEQUP
     LEFT OUTER JOIN VMSERV ON VMPTSV.WDSERVTYPE=VMSERV.WDTYPE AND VMPTSV.TXSERV=VMSERV.TXSERV;

    Des questions ? Ajoutez toutes les définitions de table.

    répondre
    0
  • Annulerrépondre