![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC
SQL join Problem
Hallo,
ich habe gerade ein Problem das passende SQL Statement zusammen zu bekommen. Gegeben sind diese 3 Tabellen: 1. "Positionen" mit diesen Feldern: BelegID ZeileNr ArtNr 2. "Steuer" mit diesen Feldern: BelegID ZeileNr Brutto 3. "Artikel " ArtNr Name Jetzt will ich für eine gegebene BelegID alle Daten aller Positionen inkl. deren Steuern und der Artikelnamen möglichst in einem Select abfragen. Nur: ArtNr. kann auch -1 sein, dann ist kein Artikel vorhanden sondern ein anderer "Belegvorfall". Was ich bisher versuchte aber bei Konstellationen mit ArtNr. = -1 keine Daten lieferte: select Po.BelegID, Po.ZeileNr, St.Brutto, A.Name from Positionen Po, Steuer St, Artikel A where (Po.BelegID = 4711) and (St.BelegID = Po.BelegID) and (St.ZeileNr = Po.ZeileNr) and (A.ArtNr = Po.ArtNr) Nehme ich (A.ArtNr = Po.ArtNr) raus, bekomme ich doppelte Einträge, nehme ich es rein, bekomme ich für ArtNr = -1 keine Einträge. Irgendwie muss ich das wohl passend "Joinen", aber wie? Grüße TurboMagic |
AW: SQL join Problem
|
AW: SQL join Problem
Danke schon mal für den Tipp, aber: ist das dann die komplette Lösung?
Oder bekomme ich wenn ich die Abfrage durch ein Case geschützt als weiteres einfaches "and" anhänge evtl. ein Kreuzprodukt oder sowas? |
AW: SQL join Problem
IMO muss die Tabelle Artikel mit einem left [outer] join verbunden werden...
Du willst ja - auch wenn rechts kein Datensatz mit der join - Bedingung existiert, die Daten links trotzdem anzeigen. In etwa so:
SQL-Code:
Frank
select
po.belegid , po.zeilenr , st.brutto , coalesce(a.name, 'Kein Artikel') artikel from positionen po join steuer st on st.belegid = po.belegid and st.zeilenr = po.zeilenr left join atrikel a on a.artnr = po.artnr where po.belegid = 4711 |
AW: SQL join Problem
Funktioniert! Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz