Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Mehrere SQL Join-Anweisungen in einem Statement (https://www.delphipraxis.net/155397-mehrere-sql-join-anweisungen-einem-statement.html)

Ascuriah 21. Okt 2010 13:57

Datenbank: XXX • Version: XXX • Zugriff über: SQL

Mehrere SQL Join-Anweisungen in einem Statement
 
HI DP´ler

Folgende Problematik beschäftigt mich:

Ich habe eine Tabelle (AGF_KBU) in der verschiedenste Spalten mit Nummern stehen (z.B: Periode_Nr, Abrechnungs_Nr, Laufende_Nr usw...).
Die jeweiligen Bezeichnungen der Spalten(Periode_Bezeichnung, Abrechnungs_Bezeichnung, usw..) stehen aber jeweils in extra Tabellen.

Mein Problem ist das ich nich tweis wie ich sämtliche INNER JOINS in ein SQL-Statement bekomm.

Hab es nun Beispielhaft für eine Verknüpfung gemacht:
Delphi-Quellcode:
Select t2.per_zeitraum from (agf_kbu t1 inner join agf_per t2 on t1.KBU_Periode = t2.PER_Periode)
(in der Tabelle agf_kbu steht die Perioden_Nr, in agf_per die Bezeichnung der entsprechenden Nr)

Die große Frage ist nun wie ich ca. 15 bis 20 solcher SQL-Abfragen in einer Einzigen verbinden kann.

Mir fällt im moment garnix mehr ein^^

DeddyH 21. Okt 2010 14:02

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Einfach hintereinander schreiben.
SQL-Code:
SELECT * FROM Tab1
JOIN Tab2 ON Bedingung
JOIN Tab3 ON Bedingung
JOIN Tab4 ON Bedingung
--usw. usf.

gmc616 21. Okt 2010 14:27

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
oder etwas klassischer:

SQL-Code:
SELECT * FROM Tab1, Tab2, Tab3, TabX
WHERE Tab1.Spalte1 = Tab2.Spalte
AND Tab1.Spalte2 = Tab3.Spalte
AND Tab1.Spalte3 = TabX.Spalte

DeddyH 21. Okt 2010 14:29

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Da werden Outer Joins aber schwieriger, AFAIK gehört das (+) nicht zum SQL-Standard.

Ascuriah 21. Okt 2010 14:53

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Beides funktioniert ganz wunderprächtig, könnt ihr mir noch sagen wo ich den left join ansetzen muss das mir von meiner grund tabelle agf_kbu ALLE Daten angezeigt werden? Auch die, die nicht den JOIN-Bedingungen entsprechen.

Edit:

Über all LEFT vorhängen habs schon raus^^

DeddyH 21. Okt 2010 14:56

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Ein (INNER) JOIN liefert nur die Daten mit Entsprechungen, ein LEFT/RIGHT (OUTER) JOIN liefert alle Daten, wobei dann die nicht vorhandenen Entsprechungen NULL-Werte liefern. Da ich Deine DB-Struktur nicht kenne, kannst Du mal testhalber alle JOINs in LEFT JOINs ändern. Anschließend musst Du selbst entscheiden, wo Du nur Entsprechungen haben willst.

Ascuriah 21. Okt 2010 15:24

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Hab aus den JOIN´s lauter LEFT JOIN´s gemacht und seh quasi nun auch alle leeren Felder aber das ist durchaus gewünscht so.^^

DeddyH 21. Okt 2010 15:28

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Dann ist ja alles paletti :)

p80286 21. Okt 2010 15:45

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Zitat:

Zitat von DeddyH (Beitrag 1056955)
Da werden Outer Joins aber schwieriger, AFAIK gehört das (+) nicht zum SQL-Standard.

Da, was den Standard angeht, jeder Hersteller sehr individuelle Vorstellungen hat, empfehle ich hier Hanbuchstudium. Zumindestens MS und Oracle bieten hier so etwas:

Tab1.idFld*= Tab2.idFld -- MS
Tab1.idFld(+)= Tab2.idFld -- Oracle

Was Kommentare angeht, gibt es ja auch unterschiedliche Ansätze.

Gruß
K-H

DeddyH 21. Okt 2010 15:53

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Dann doch lieber die JOIN-Syntax, damit können alle mir bekannten DBMS umgehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 Uhr.
Seite 1 von 3  1 23      

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