Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi OUTER JOIN mit 2 Bedingungen !?!?!?! (https://www.delphipraxis.net/31578-outer-join-mit-2-bedingungen.html)

Helld_River 11. Okt 2004 13:14


OUTER JOIN mit 2 Bedingungen !?!?!?!
 
Hi @ all !
Ich habe folgendes Problem:

Ich habe folgende Datenbankkonstruktion:
Tabelle Artikel: selbsterklärend :-)
Tabelle Auftrag: selbsterklärend :-)
Tabelle AuftragsPosition: selbsterklärend :-)
Tabelle Kunden: selbsterklärend :-)

Tabelle ArtikelTarif: beinhaltet pro Artikel/Land-Kombination ein Porto

In der Tabelle Artikel gibt es ein Feld FrachtPauschale, welches genommen werden soll,
wenn kein entsprechender Eintrag in der Tabelle Artikeltarif vorhanden ist !

Hat einer von euch eine Idee, wie ich per SQL-Statement die entsprechenden Daten bekomme ?

Mein bisheriger Weg:

SQL-Code:
SELECT MAX((IF ISNULL(ArtikelTarif.Tarif,0)=0 THEN Artikel.FrachtPauschale ELSE ArtikelTarif.Tarif ENDIF)) AS Porto
FROM Auftrag,Kunden,Auftragsposition,
Artikel LEFT OUTER JOIN ArtikelTarif ON (Artikel.ID=ArtikelTarif.ArtikelID AND Kunden.Laendercode=ArtikelTarif.Laendercode)
WHERE Auftrag.KundenID=Kunden.ID

AND Auftrag.ID=Auftragsposition.AuftragID
AND Auftragsposition.ArtikelID=Artikel.ID
AND Auftrag.ID=610
Dummerweise läuft dieses Statement nicht mehr unter Sybase ASA 9 :-(

Jelly 11. Okt 2004 14:18

Re: OUTER JOIN mit 2 Bedingungen !?!?!?!
 
Zitat:

Zitat von Helld_River
Hat einer von euch eine Idee, wie ich per SQL-Statement die entsprechenden Daten bekomme ?

Welche Daten willst du denn überhaupt bekommen :gruebel: Ist vielleicht nicht ganz unwichtig.

Nachtrag: Welches DBMS nutzt du?

shmia 11. Okt 2004 14:40

Re: OUTER JOIN mit 2 Bedingungen !?!?!?!
 
Du hast 2 verschiedene Syntax-Varianten vermischt.
Versuch mal:
SQL-Code:
SELECT MAX((IF ISNULL(ArtikelTarif.Tarif,0)=0 THEN Artikel.FrachtPauschale ELSE ArtikelTarif.Tarif ENDIF)) AS Porto
FROM
  (Auftrag INNER JOIN Auftragsposition ON Auftrag.ID=Auftragsposition.AuftragID
  INNER JOIN Kunden ON Auftrag.KundenID=Kunden.ID
  INNER JOIN Artikel ON Auftragsposition.ArtikelID=Artikel.ID)
  LEFT OUTER JOIN ArtikelTarif ON (Artikel.ID=ArtikelTarif.ArtikelID AND Kunden.Laendercode=ArtikelTarif.Laendercode)
WHERE
Auftrag.ID=610

Helld_River 11. Okt 2004 16:33

Re: OUTER JOIN mit 2 Bedingungen !?!?!?!
 
@Jelly
Zitat:

Zitat von Helld_River
In der Tabelle Artikel gibt es ein Feld FrachtPauschale, welches genommen werden soll,
wenn kein entsprechender Eintrag in der Tabelle Artikeltarif vorhanden ist !

Das aktuelle Problem bestand auf dem Sybase ASA 9 !

@shmia
DANKE, es läuft. Kannst du mir noch sagen, warum ich nicht beide Syntax-Varianten benutzen kann ? Ging immerhin vorher auch !

Gruß, Helld !

shmia 12. Okt 2004 07:30

Re: OUTER JOIN mit 2 Bedingungen !?!?!?!
 
Zitat:

Zitat von Helld_River
@shmia
DANKE, es läuft. Kannst du mir noch sagen, warum ich nicht beide Syntax-Varianten benutzen kann ? Ging immerhin vorher auch !

Na ja, der SQL Interpreter ist auch nur ein Mensch. :stupid:
Wenn die 1. Hälfte der Anweisung schwäbisch und der Rest hessisch ist, dann gibts Verwirrung.
Und SQL Interpreter sind auch nicht fehlerfrei....

Helld_River 12. Okt 2004 14:10

Re: OUTER JOIN mit 2 Bedingungen !?!?!?!
 
Hi !
Nur zur Info:
Hab noch mal etwas mit dem SQL rumprobiert:
Es reicht auch, einfach die Tabellen Kunden und Artikel vor dem LEFT OUTER JOIN zu klammern !!


SQL-Code:
SELECT MAX((IF ISNULL(ArtikelTarif.Tarif,0)=0 THEN Artikel.FrachtPauschale ELSE ArtikelTarif.Tarif ENDIF)) AS Porto
FROM Auftrag,Auftragsposition,

(Kunden,Artikel) LEFT OUTER JOIN ArtikelTarif ON (Artikel.ID=ArtikelTarif.ArtikelID AND Kunden.Laendercode=ArtikelTarif.Laendercode)

WHERE Auftrag.KundenID=Kunden.ID

AND Auftrag.ID=Auftragsposition.AuftragID
AND Auftragsposition.ArtikelID=Artikel.ID
AND Auftrag.ID=610
Gruß, Helld


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz