AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi OUTER JOIN mit 2 Bedingungen !?!?!?!
Thema durchsuchen
Ansicht
Themen-Optionen

OUTER JOIN mit 2 Bedingungen !?!?!?!

Ein Thema von Helld_River · begonnen am 11. Okt 2004 · letzter Beitrag vom 12. Okt 2004
Antwort Antwort
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#1

OUTER JOIN mit 2 Bedingungen !?!?!?!

  Alt 11. Okt 2004, 13:14
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
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

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

  Alt 11. Okt 2004, 14:18
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 Ist vielleicht nicht ganz unwichtig.

Nachtrag: Welches DBMS nutzt du?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

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

  Alt 11. Okt 2004, 14:40
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
Andreas
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#4

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

  Alt 11. Okt 2004, 16:33
@Jelly
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 !
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

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

  Alt 12. Okt 2004, 07:30
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.
Wenn die 1. Hälfte der Anweisung schwäbisch und der Rest hessisch ist, dann gibts Verwirrung.
Und SQL Interpreter sind auch nicht fehlerfrei....
Andreas
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#6

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

  Alt 12. Okt 2004, 14:10
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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