Zitat von
Uncle Cracker:
Naja, mit der jetzigen
SQL-Anweisung könnt ihr wahrscheinlich nicht viel anfangen:
SELECT * FROM AB_AUFLAGE AB, VM_VORGANG V,KP_ECKTERMINE ECK,KP_AUFTRAG AUF,KL_KOSTENSTELLEN K,KL_MENUBEREICHE MEN,KP_GEPLANTEZEIT GEP,A_EXTNR EXT,VM_VARIABLEN VAR WHERE ECK.ECKTERMINTYP=3 AND ECK.ECKTERMIN BETWEEN 39971 AND 40000 AND V.VORGANGSNR=AB.VORGANGSNR AND V.VORGANGSNR=ECK.VORGANGSNR AND V.LI_FERTIG IS NULL AND ECK.VORGANGSNR=V.VORGANGSNR AND AUF.VORGANGSNR=ECK.VORGANGSNR AND AUF.STATUS < 2 AND ADR_INTNR=KUNDE_INTNR AND ADR_TYP=1 AND GEP.VORGANGSNR=ECK.VORGANGSNR AND K.KST_NR=GEP.KST_NR AND MEN.ECKTERMINTYP=ECK.ECKTERMINTYP AND K.MENBERNR=MEN.MENBERNR AND ADR_INTNR=KUNDE_INTNR AND VAR.VORGANGSNR (+) = V.VORGANGSNR AND VAR.VARNR (+) = 211 ORDER BY K.KST_KURZ
Wenn ich "ORDER BY" durch "GROUP BY vorgangsnr, wert" ersetze bekomme ich die Meldung: Ambiguous column reference
mhm ... also evtl. kann ich dir die Lösung nicht auf dem Silbertablett präsentieren ... aber um deinen Code zu lesen
wäre es von Vorteil wenn du ihn auch ordentlich formatierst ... z.B. so ...
SQL-Code:
SELECT *
FROM
AB_AUFLAGE AB, VM_VORGANG V,KP_ECKTERMINE ECK,KP_AUFTRAG AUF,
KL_KOSTENSTELLEN K,KL_MENUBEREICHE MEN,KP_GEPLANTEZEIT GEP,A_EXTNR EXT,
VM_VARIABLEN VAR
WHERE
(ECK.ECKTERMINTYP = 3) AND
(ECK.ECKTERMIN BETWEEN 39971 AND 40000) AND
(V.VORGANGSNR = AB.VORGANGSNR) AND
(V.VORGANGSNR = ECK.VORGANGSNR) AND
(V.LI_FERTIG IS NULL) AND
(ECK.VORGANGSNR = V.VORGANGSNR) AND
(AUF.VORGANGSNR = ECK.VORGANGSNR) AND
(AUF.STATUS < 2) AND
(ADR_INTNR = KUNDE_INTNR) AND
(ADR_TYP = 1) AND
(GEP.VORGANGSNR = ECK.VORGANGSNR) AND
(K.KST_NR = GEP.KST_NR) AND
(MEN.ECKTERMINTYP = ECK.ECKTERMINTYP) AND
(K.MENBERNR = MEN.MENBERNR) AND
(ADR_INTNR = KUNDE_INTNR) AND
(VAR.VORGANGSNR (+) = V.VORGANGSNR) AND
(VAR.VARNR (+) = 211)
ORDER BY
K.KST_KURZ
Ohne deine Tabellen zu kennen bin ich der Meinung dass deine Ergebnismenge, die aus dem Statement hervorgeht, größer ist als du sie überhaupt benötigst ... zumindest nach der Aussage, dass du nur die Vorgangsnummer, Auftragsnummer und den irgendeinen Wert brauchst ...
Bei deinem Statement holst du dir alle Datensätze und jedes FELD aus jeder im FROM angegebenen Tabelle. Benötigst für die Ausgabe und Überprüfung aber sicherlich nicht alle ... Ob deine Abfrage noch sonderlich performant ist wenn in jeder Tabelle sich mal ein paar huntertausend Datensätze angesammelt haben wage ich zu bezweifeln.
Alles weitere können dir bestimmt andere erklären