![]() |
Datenbank: M$ Acc$$ • Zugriff über: direkt oder ado
sQL Join ?? wie gehts?
moin moin,
danke erstmal dass ich hier posten darf, ich hab nämlich 'n mittelmässiges problem, bin mir aber sicher ihr könnt mir bei helfen :-) also, gegeben sind drei tabellen T1 (@T1ID, blabla) T2 (@T2ID, blabla) L(@T1ID, @T2ID) wobei @ 'n schlüssel anzeigt. jetzt möchte ich 'ne einfache liste erzeugen ... wo alle datensätze in T1 angezeigt werden und diese nach T2, blabla sortiert werden... dachte mir, das ging irgendwie so ....
SQL-Code:
nur das mag er nicht... weiss jemand wie das geht? müsst eigentlich eine standartabfrage sein, wenn ich mich nicht irre ...
select t1.blabla, t2,blabla from
t1 left join L on T1.T1ID = L.T1ID Inner join T2 on L.T2ID = T2.T2ID order by T2.blabla herzlichen dank euer SQLNoop |
Re: sQL Join ?? wie gehts?
SQL-Code:
select
t1.blabla, t2.blabla from L join t1 on t1.t1id = l.t1id join t2 on t2.t1id = l.t2id order by T2.blabla; |
Re: sQL Join ?? wie gehts?
einen schönen abend mkinzler,
ich habe deine SQL Abfrage mal eingegeben, da bringt er mir die meldung syntaxfehler in from klausel ... was hab ich da falsch gemacht? im übrigen, sollte die lösung mit mehreren Lx dateien funktionierne, wobei immer alle T1 sätze angezeigt werden sollten... vielen dank euer SQLNoop |
Re: sQL Join ?? wie gehts?
Versuch mal
SQL-Code:
select
t1.blabla, t2.blabla from L inner join t1 on t1.t1id = l.t1id inner join t2 on t2.t2id = l.t2id order by T2.blabla; |
Re: sQL Join ?? wie gehts?
Liste der Anhänge anzeigen (Anzahl: 1)
hallo MKinzler,
danke für die hilfe, jetzt bringt er die meldung, fehlender abfrageoperator .. ich häng mal die beispiel db hinten an... ausserdem sollte es schon 'n outer join sein, da noch mehr link tabellen zukommen können und die grundgesamtheit der tabelle T1 ausgewiesen werden sollte... dank und gruss der SQLNoop |
Re: sQL Join ?? wie gehts?
Bei Access muss man Klammern setzen um die Reihenfolge der Joins festzulegen.
Delphi-Quellcode:
select
t1.*, t2.blabla from (t1 LEFT OUTER JOIN l ON t1.t1id = l.t1id) LEFT OUTER JOIN t2 ON t2.T2id = l.t2id order by T2.blabla; |
Re: sQL Join ?? wie gehts?
guten morgen SX2008
wunderbar es funktioniert... nur das statement kapiere ich nicht :?
SQL-Code:
das mit den klammern setzten hab ich ja auch schon probiert... tja hat halt nie geklappt mit dem inner join ... dass man hier 'n left join setzen muss statt 'n inner join ... auf das wär ich nie gekommen ...
select
t1.*, t2.blabla from (t1 LEFT OUTER JOIN l ON t1.t1id = l.t1id) LEFT OUTER JOIN t2 ON t2.T2id = l.t2id //hier weshalb kein inner join? order by T2.blabla; gibts eine erklärung für dieses phänomen? viele grüsse an den kalten und regnerischen feiertag SQLNoop |
Re: sQL Join ?? wie gehts?
Zitat:
Wenn man schreibt:
SQL-Code:
dann bekommt am ALLE Datensätze von TabA verknüpt mit den Datensätzen von TabB.
TabA LEFT OUTER JOIN TabB ON TabA.IdFeld1=TabB.IdFeld1
Falls in TabB kein passender Datensatz, dann sind die Felder von Tab = NULL. Das ist übrigens das Gleiche wie:
SQL-Code:
Ich verwende immer LEFT Outer Join, dass finde ich leichter nachzuvollziehen.
TabB RIGHT OUTER JOIN TabA ON TabA.IdFeld1=TabB.IdFeld1
Nachdem wir TabA und TabB verjoined haben, kommt eine dritte Tabelle ins Spiel
SQL-Code:
Das heisst also bei Joins werden immer 2 Tabellen verknüpft; kommt eine weitere Tabelle hinzu,
(TabA LEFT OUTER JOIN TabB ON TabA.IdFeld1=TabB.IdFeld1)
LEFT OUTER JOIN TabC ON TabB.IdFeld2 = TabC.IdFeld2 wird das bisherige Ergebnis geklammert (nur bei Access!) und man "joind" die 3. Tabelle hinzu. Die Klammersetzung ist nur bei Access notwendig; andere DBMS sind intelligenter und ermitteln die optimale Verknüpfungsreihenfolge selber. Es macht durchaus einen Unterschied in welcher Reihenfolge man Tabellen verknüpt. Das End-Ergebnis bleibt gleich,aber die Zwischenergebnisse unterscheiden sich - es gibt eine optimale Reihenfolge, bei der die Speicherbelastung am gringsten ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 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 by Thomas Breitkreuz