Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

khh 21. Okt 2010 16:55

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

Zitat von gmc616 (Beitrag 1056953)
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

möcht ich grad mal meine Senf dazu geben ;-)
OT on
Die klassische Art ist meiner Meinung nach besser lesbar
OT off


Gruss KHH

p80286 21. Okt 2010 17:03

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

Zitat von khh (Beitrag 1056982)
Zitat:

Zitat von gmc616 (Beitrag 1056953)
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

möcht ich grad mal meine Senf dazu geben ;-)
OT on
Die klassische Art ist meiner Meinung nach besser lesbar
OT off


Gruss KHH

Ist wohl Geschmackssache, obwohl ich hier schon Beispiele gesehen habe, die auch ordentlich aussahen.

@DeddyH
Vielleicht heute, vor ein paar Jahren war das nicht so, darum bin ich immer noch "klassiker"

Gruß
K-H

Ascuriah 25. Okt 2010 09:54

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

Hab grad die beiden Methoden nochmal getestet und bin auf folgendes Problem gestoßen. Wenn ich in dem SELECT * FROM table1, table2, usw... bestimmte Tabellen aus meiner DB in die FROM Angabe schreibe erhält meine Ergebnismenge jeden Datensatz immer mehrmals und ich habe keine Ahnung wie das zu stande kommt.

Hier noch ma der Bsp-Code:
Code:
SELECT * FROM AGF_KBU t1, AGF_PER t2, AGF_BUKR t3, AGF_KSTK t4, AGF_SAK t5
      WHERE t1.KBU_Periode = t2.PER_Periode
      AND t1.KBU_Bukr_Nummer = t3.BUKR_Nummer
Ohne die t5 funktionierts einwandfrei, sobald ich diese hinzufüge nicht mehr (und das is mit einigen Spalten so)
Ist ADS da irgendwie beschränkt oder müssen die Properties der Tables gewissen Vorraussetzungen erfüllen? (Waren jetzt meine ersten Ideen)

mfg

DeddyH 25. Okt 2010 09:59

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Du hast ja auch nicht definiert, wie die Tabelle 5 in Beziehung zu den anderen steht, somit erhältst Du das kartesische Produkt der Datensätze dieser Tabelle zu denen des JOINs.

Ascuriah 25. Okt 2010 10:05

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Hm ok aber das hab ich bei Tabelle 4 ja auch nicht getan und mit der gehts ganz normal, daher wunderts mich

DeddyH 25. Okt 2010 10:11

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Vielleicht gibt es nur einen Datensatz in Tabelle 4?

Ascuriah 25. Okt 2010 10:16

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Nope, da sind einige drin.

Jetzt bekomm ich noch nen Invalid Operator Fehler bei meinem Code:

Code:
SELECT kbu_key, kbu_sts, sts_bezeichnung FROM AGF_KBU t1, AGF_PER t2, AGF_BUKR t3, AGF_STS t4
      WHERE t1.KBU_Periode = t2.PER_Periode
      AND t1.KBU_Bukr_Nummer = t3.BUKR_Nummer
      AND t1.KBU_STS = t4.STS_Bezeichnung
Ach ja wenn ich die JOIN-Syntax verwende funktioniert es besser als so^^

DeddyH 25. Okt 2010 10:18

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Sind die Feldbezeichner eindeutig? Ansonsten schreib einmal den Alias davor (in der SELECT-Klausel).

Ascuriah 25. Okt 2010 10:34

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
Hm ne daran liegts wohl auch ned, hm kp, ich werds nu mit der JOIN Syntax umsetzen da klappts wesentlich besser

Ascuriah 25. Okt 2010 10:47

AW: Mehrere SQL Join-Anweisungen in einem Statement
 
So hab das ganze nu auf JOIN-Syntax umgemünzt nur leider im Endeffekt das selbe Problem (war ja eigentlich auch zu erwarten)

Code:
SELECT t1.kbu_key, t2.per_zeitraum, t3.bukr_bez, t4.sts_bezeichnung, t5.sak_kbez, t6.kst_kbez, t7.bis_langtext FROM AGF_KBU t1 
                    LEFT JOIN AGF_PER t2  ON t1.KBU_Periode = t2.PER_Periode
                 LEFT JOIN AGF_BUKR t3 ON t1.KBU_Bukr_Nummer = t3.BUKR_Nummer
                 LEFT JOIN AGF_STS t4  ON t1.KBU_Sts = t4.STS_Schluessel
                 LEFT JOIN AGF_SAK t5  ON t1.KBU_Konto = t5.SAK_Konto
                 LEFT JOIN AGF_KSTK t6 ON t1.KBU_Kost1 = t6.KST_Kostenstelle
                 LEFT JOIN AGFA_BIS t7 ON t5.SAK_iBilanzrelevant = t7.BIS_Zeile
selbst wenn ich alles mit Alias versehe ensteht durch die LETZTE ZEILE der Effekt das alle Datensätze 7 mal vorkommen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz