![]() |
Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen
Also ich bevorzuge die "alte" Syntax (jo, Oracelaner),
wenn ich diese joins sehe, die ACCESS erstellt (ich weiß, ACCESS ist nicht satisfaktionsfähig) dann hab ich immer das Gefühl einen Basic-Source mit ganz vielen gotos vor mir zu haben. funktioniert, aber undurchschaubar. Gruß K-H |
Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen
Ich finde explizite Joins richtig eingerückt aber übersichtlicher
|
Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen
Zitat:
wobei anstatt SELECT T1.*, T2.* ... select * FROM Tabelle1 T1, Tabelle2 T2 WHERE T2.uid = T1.uid AND T1.gid = 1 ja ausreichen ist. ich finde diese "alte" Syntax liest sich irgendwie besser, und ich gebs zu ich hab auch bei oracle gelernt ;-) Gruss KH |
Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen
Was ist den an
SQL-Code:
unübersichtlich?
select
T1.*, T2.* FROM Tabelle1 T1 join Tabelle2 T2 on T2.uid = T1.uid WHERE T1.gid = 1; |
Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen
Okay, brechen wir einen Glaubenskrieg vom Zaun!!
SQL-Code:
SELECT VTP_TABDOS.CODDOS, VTP_TABBRE.IDEPAY, VTP_TABEVE.CODEVE, VTP_TABSUI.DATECH
FROM (((VTP_TABDOS INNER JOIN VTP_TABBRE ON VTP_TABDOS.IDEDOS = VTP_TABBRE.IDEDOS) INNER JOIN VTP_TABPAY ON VTP_TABBRE.IDEPAY = VTP_TABPAY.IDEPAY) INNER JOIN VTP_TABSUI ON VTP_TABBRE.IDEBRE = VTP_TABSUI.IDEDOS) INNER JOIN VTP_TABEVE ON VTP_TABSUI.IDEECH = VTP_TABEVE.IDEEVE;
SQL-Code:
das obere Beispiel hat Access generiert da bin ich unschuldig!
SELECT VTP_TABDOS.CODDOS, VTP_TABBRE.IDEPAY, VTP_TABEVE.CODEVE, VTP_TABSUI.DATECH
FROM VTP_TABDOS, VTP_TABBRE, VTP_TABPAY, VTP_TABSUI, VTP_TABEVE WHERE VTP_TABDOS.IDEDOS = VTP_TABBRE.IDEDOS and VTP_TABBRE.IDEPAY = VTP_TABPAY.IDEPAY and VTP_TABBRE.IDEBRE = VTP_TABSUI.IDEDOS and VTP_TABSUI.IDEECH = VTP_TABEVE.IDEEVE Was mich z.B. stört
SQL-Code:
Da wird eine Tabelle (VTP_TABPAY) mit zwei anderen Tabellen (VTP_TABDOS,VTP_TABBRE) verbunden. erst im "Nachsatz" lese ich, daß die Verbindung über
(VTP_TABDOS INNER JOIN VTP_TABBRE ......) INNER JOIN VTP_TABPAY ON ....
SQL-Code:
erfolgt.
VTP_TABBRE.IDEPAY = VTP_TABPAY.IDEPAY
In der unteren Version erscheint mir das einfacher zu überblicken, da pro Zeile immer nur zwei Tabellen miteinander verbunden werden, insbesonders wenn noch ein paar Tabellen dazu kommen. Was gegen die "alte" Version spricht, ist die Vermengung von "Tabellenverbindungen" und "Wertabfragen". Wenn man da eine Fremdabfrage in die Finger bekommt ist es mit der Übersichtlichkeit schnell dahin. Für die "alte" Version spricht die (meiner Meinung nach) einfache Auskommentierbarkeit wenn z.b. eine Tabelle hinzu kommen soll oder entfernt werden soll . Gruß K-H |
Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen
Nur weil der Code den Access erzeugt suboptimal und unübersichtlich ist würde ich nicht die Syntax verdammen.
SQL-Code:
SELECT
VTP_TABDOS.CODDOS, VTP_TABBRE.IDEPAY, VTP_TABEVE.CODEVE, VTP_TABSUI.DATECH FROM VTP_TABDOS join VTP_TABBRE on VTP_TABBRE.IDEDOS = VTP_TABDOS.IDEDOS join VTP_TABSUI on VTP_TABSUI.IDEDOS = VTP_TABBRE.IDEBRE join join VTP_TABEVE on VTP_TABEVE.IDEEVE = VTP_TABSUI.IDEECH join VTP_TABPAY on VTP_TABPAY.IDEPAY = VTP_TABBRE.IDEPAY; |
Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen
Zitat:
Nur, bei den Beispielen fällt es schwer eine andere Syntax zu akzeptieren.
SQL-Code:
könnte man dies in eine solche Allgemeinform überführen:
SELECT
VTP_TABDOS.CODDOS, VTP_TABBRE.IDEPAY, VTP_TABEVE.CODEVE, VTP_TABSUI.DATECH FROM VTP_TABDOS join VTP_TABBRE on VTP_TABBRE.IDEDOS = VTP_TABDOS.IDEDOS join VTP_TABSUI on VTP_TABSUI.IDEDOS = VTP_TABBRE.IDEBRE join join VTP_TABEVE on VTP_TABEVE.IDEEVE = VTP_TABSUI.IDEECH join VTP_TABPAY on VTP_TABPAY.IDEPAY = VTP_TABBRE.IDEPAY;
SQL-Code:
und um NULL-Werte zu beachten
...
FROM tabelle1 JOIN tabelle2 ON tabelle2.spa = tabellex.spy JOIN tabelle3 ON tabelle3.spa = ... ...
SQL-Code:
Gruß
FROM Tabelle1,Tabelle2,Tabelle3
WHERE Tabelle1.id0 = Tabelle2.id0 AND Tabelle1.ID1 = Tabelle3.id1(+) FROM Tabelle1 JOIN Tabelle2 ON Tabelle1.id0 = Tabelle2.id0 LEFT JOIN Tabelle3 ON Tabelle3.id1=Tabelle1.id1 oder RIGHT JOIN Tabelle3 ON Tabelle1.id1 = Tabelle3.id1 K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:47 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