2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
531
531
EMPFEHLEN
-
Hallo zusammen,
Nachdem ich mich mit den Grundlagen von SQL einigermaßen auskenne, wollte ich jetzt etwas fortgeschrittenere SQL ABFRAGEN machen.
Bis jetzt habe ich den Inner Join, Left Join und Right Join kennengelernt. Dabei habe ich aber immer nur 2 Tabellen miteinander verbunden. Sprich T1 = T2 und dann in ON die Bedingung.
Wenn ich jetzt 3 Tabellen miteinander Verbinden möchte, wie sähe denn dann die Syntax aus ?
Beispiel:
T1 = T2
T2 = T3
Und dann
ON Bedingung 1
On Bedingung 2
Oder sähe es so aus:
T1 = T2
ON Bedingung 1
T2 = T3
ON Bedingung 2
Würd mich über ein selbst ausgewähltes beispiel freuen.
Danke
-
Einfach ein weiterer Join anhängen
Code sql:1 2 3 4 5 6 7 8 9 10 11 12
SELECT T1.*, T2.name, T3.feld13 FROM T1 INNER JOIN T2 ON T1.d = T2.t1_id LEFT JOIN T3 ON T1.id = T3.t1_id AND T2.code = T3.code AND ...
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hallo Yaslaw,
ich glaub ich habs fast verstanden, ich hab hier mal ein Beispiel, würd mich freuen, wenn du drüber schaust.
Es gibt insgesamt 3 Tabellen, um von Tabelle 1 zu 2 zu gelangen hat man in Tabelle 2 einen Fremdschlüssel Namens KundenID und um von Tabelle 2 zu Tabelle 3 zu gelangen hat man in Tabelle 3 den Fremdschlüssel ArtikelgruppeID
Tabelle 1 (Kunde)
Kunde
KundenID
Tabelle 2 ( Artikelgruppe )
Artikelgruppe
ArtikelgruppeID
KundenID -> Fremdschlüssel
Tabelle 3 ( Artikel )
Artikel
ArtikelID
ArtikelgruppeID -> Fremdschlüssel
Die SQL Abfrage sieht dann folgendermaßen aus:
Code :1 2 3 4 5 6
SELECT T1.*, T2*, T3.* FROM Kunde AS T1 INNER JOIN Artikelgruppe AS T2 ON T1.KundenID = T2.KundenID INNER JOIN Artikel AS T3 ON T2.ArtikelgruppeID = T3.ArtikelgruppeID
Also ich bin vorgegangen, indem ich von Tabelle 1 nach Tabelle 2 gehe von Tabelle 2 nach Tabelle 3 usw. Tabelle 4 nach Tabelle 5
Bei dein Beispiel machst du bei dem Left join eine Verbindung von Tabelle 1 zu Tabelle 3. Dafür müssen aber bei beiden Tabelle die schlüssel vorhanden sein die zueinander passen sollten, richtig ?
Beste Grüße
-
Also, dein SQL sieht gut aus.
Zum LEFT JOIN und INNER JOIN.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
Tabelle A A_ID | A_NAME ---------- 1 | x 2 | y 3 | z Tabelle B B_ID | A_ID_FK -------------- 1 | 1 2 | 1 3 | 3
A INNER JOIN B:
Nimm Alles von A und B, das in B auch enthalten ist
Code :1 2 3 4 5 6
A INNER JOIN B ON A.A_ID = B.A_ID_FK A_NAME | B_ID ------------- x | 1 x | 2 z | 3
A LEFT JOIN B:
Nimm alles von A (auch wenn in B nix passendes ist) und die passenden aus B
Code :1 2 3 4 5 6 7
A LEFT JOIN B ON A.A_ID = B.A_ID_FK A_NAME | B_ID ------------- x | 1 x | 2 y | NULL z | 3
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hallo Yaslaw,
danke was der inner Join und Left Join bewirken habe ich schon recherchiert. Mir geht s eigentlich nur um die SYNTAX.
Z.b:
Code :1 2 3 4 5
SELECT T1.*, T2*, T3.* FROM Kunde AS T1 INNER JOIN Artikelgruppe AS T2 ON T1.KundenID = T2.KundenID INNER JOIN Artikel AS T3 ON T2.ArtikelgruppeID = T3.ArtikelgruppeID
Code :1 2 3 4 5 6 7
SELECT T1.*, T2*, T3.* FROM Kunde AS T1 INNER JOIN Artikelgruppe AS T2 INNER JOIN Artikel AS T3 ON T1.KundenID = T2.KundenID ON T2.ArtikelgruppeID = T3.ArtikelgruppeID
Ist die zweite Syntax ebenso gut ? Könntest du mir vielleicht ein gutes Buch zu SQL Abfragen im hinblick auf dem SQL SERVER bzw. Business Intelligence empfehlen?
LG
-
Ob die 2te überhabut geht mag ich mal bezweifeln.....
Auch die erste geht nicht. Du hast T1, dann T2 , dann T3 das du zu T1 umbenennst, anschliessend die Artielgruppe die zu T2 wird (owoghl T2 schon aufgeführt ist...
Es ist immer
Tabelle JOIN Tabelle ON bedinung JOIN Tabelle ON Bedinnung JOIN Tabelle ON Bedinnung---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
komisch, jetzt versteh ich gar nichts mehr.
du sagtest ja ganz zu Beginn das die SQL Abfrage gut aussieht:
Code :1 2 3 4 5
SELECT T1.*, T2*, T3.* FROM Kunde AS T1 INNER JOIN Artikelgruppe AS T2 ON T1.KundenID = T2.KundenID INNER JOIN Artikel AS T3 ON T2.ArtikelgruppeID = T3.ArtikelgruppeID
Und nun sagst du, das die erste SQL Abfrage nicht geht.
Warum geht die denn nicht ?
-
Weil ich den Fehler erst jetzt gesehen habe. Manchmal übersieht man einige Fehler vor lauter Fehlern. *g*
Ansonsten: "Probieren geht über Studieren"
ALso mit HeidiSQL oder phpMyAdmin einfach mal das Query ausprobieren und schauen ob es funktioniert.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
allo Yaslaw, hab die Abfrage im SQL SERVER ausprobiert.
Da musst ich das aber mit Transact SQL machen, is ja eigentlich kein Großer unterschied. Da hab ich das nach dem selben Prinzip gemacht und es funktioniert.
Siehe:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
SELECT [AdventureWorks].[dbo].[Kunden].[KundeID] ,[AdventureWorks].[dbo].[Kunden].[KundenName] ,[AdventureWorks].[dbo].[Kunden].[Kundennummer] ,[AdventureWorks].[dbo].[Artikel].[ArtikelID] ,[AdventureWorks].[dbo].[Artikel].[KundenID] ,[AdventureWorks].[dbo].[Artikel].[Artikelnummer] ,[AdventureWorks].[dbo].[Artikel].[Artikelname] ,[AdventureWorks].[dbo].[Artikel].[Artikelpreis] ,[AdventureWorks].[dbo].[Zeit].[ArtikelID] ,[AdventureWorks].[dbo].[Zeit].[Date] FROM [AdventureWorks].[dbo].[Kunden] INNER JOIN [AdventureWorks].[dbo].[Artikel] ON [AdventureWorks].[dbo].[Kunden].[KundeID]=[AdventureWorks].[dbo].[Artikel].[KundenID] INNER JOIN [AdventureWorks].[dbo].[Zeit] ON [AdventureWorks].[dbo].[Artikel].[ArtikelID] = [AdventureWorks].[dbo].[Zeit].[ArtikelID] GO
Ähnliche Themen
-
Freundesliste und JOINS
Von lisali im Forum PHPAntworten: 0Letzter Beitrag: 30.07.09, 05:45 -
Daten aus mehreren Tabellen über Joins anzeigen
Von thinkpad im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 10.04.08, 13:08 -
MySQL joins auf mehrere tabellen
Von momo006 im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 07.11.07, 20:36 -
mySQL Tabellen dynamisch mit JOINS verknüpfen
Von gelleneu im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 16.07.07, 12:14 -
Joins mit mehreren Tabellen
Von jarkand im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 19.01.07, 18:31





Zitieren

Login





