![]() |
[SQL] Inner Join Anweisung?!
Hi,
ich habe ein Problem bei einer INNER JOIN SQL-Anweisung. Ich habe 3 Tabellen und möchte aus einer Tabelle die Daten aus drei Tabellen ausgeben. Wie kann ich das machen? Hier meine Tabellen: Tabelle Teams:
Code:
Die Ausgabe soll anhand der Tabelle Spiele erfolgen und soll im ersten Fall z.B. so aussehen:
TeamID Team
1 ABC 2 CDE 3 FGH Tabelle Liga: LigaID Liga 1 A-Liga 2 B-Liga 3 C-Liga Tabelle Spiele: SpielID LigaID HeimTeamID AuswaertsTeamID 1 1 1 2 2 1 2 3 3 1 3 1
Delphi-Quellcode:
Kann mir jemand bei der SQL-Anweisung helfen?
1 A-Liga ABC CDE
|
Re: [SQL] Inner Join Anweisung?!
SQL-Code:
SELECT spielid,
(SELECT liga FROM liga WHERE ligaID = s.ligaID), (SELECT team FROM team WHERE teamid = s.heimteamID), (SELECT team FROM team WHERE teamid = s.auswaertsteamID) FROM spiele s |
Re: [SQL] Inner Join Anweisung?!
Delphi-Quellcode:
select a.SpielId, pb.Liga,c.Team Heim,d.Team Gast from spiele a,Liga b,Teams c,Teams d where b.LigaId=a.LigaId and c.TeamID=a.HeimTeamId and d.TeamID=a.AuswTeamId
|
Re: [SQL] Inner Join Anweisung?!
Benötigt man da keine INNER JOIN?!
Okay, es funktioniert, aber ist das die "eleganteste" Lösung? Nachtrag: Ich benötige eine variable Eingabe von der SpielID, d.h. das muss ich doch irgendwie in die Abfrage mit einbauen, oder? |
Re: [SQL] Inner Join Anweisung?!
Das Statement von mashutu ist ein INNER JOIN ;)
|
Re: [SQL] Inner Join Anweisung?!
Hi,
versuchs mal so:
SQL-Code:
SpielID wird dann als Parameter z.B. in einer TQuery gesetzt...
select s.SpielID, l.Liga, th.Team, ta.Team
from Spiele s join Liga l on l.LigaID = s.LigaID join Team th on th.TeamID = s.HeimTeamID join Team ta on ta.TeamID = s.AuswaertsTeamID where s.SpielID = :SpielID Edit: Zitat:
|
Re: [SQL] Inner Join Anweisung?!
Danke, NormanNG...das funktioniert! :-)
Warum ist das von mashutu ein INNER JOIN? Ich dachte da bräuchte man so Statements wie INNER, OUTER, LEFT/RIGHT JOIN? |
Re: [SQL] Inner Join Anweisung?!
Ohne Angabe handelt es sich immer um einen inner join
|
Re: [SQL] Inner Join Anweisung?!
Zitat:
|
Re: [SQL] Inner Join Anweisung?!
Mal anders formatiert:
SQL-Code:
In anderer Syntax:
select a.SpielId, pb.Liga,c.Team Heim,d.Team Gast
from spiele a,Liga b,Teams c,Teams d where b.LigaId=a.LigaId and c.TeamID=a.HeimTeamId and d.TeamID=a.AuswTeamId
SQL-Code:
select a.SpielId, pb.Liga,c.Team Heim,d.Team Gast
from spiele a inner join Liga b on b.LigaId=a.LigaId inner join Teams c on c.TeamID=a.HeimTeamId inner join Teams d on d.TeamID=a.AuswTeamId |
Re: [SQL] Inner Join Anweisung?!
Ah, okay...wieder was gelernt :-)
DANKE! |
Re: [SQL] Inner Join Anweisung?!
Na ja man kann INNER JOINS (immer?) in "WHERE" Klauseln unterbringen. Ich denke aber, dass dies nicht wirklich SQL-like ist. Denn eigentlich soll die "FROM" Klausel ausdrücken, welche Menge gemeint ist (darum sind die JOIN in diesem Teil) und dann wird in der WHERE Klausel nach Bedarf gefiltert.
Gruss PMM |
Re: [SQL] Inner Join Anweisung?!
Der Standard unterstützte explizite Joins nicht schon immer. Joins über die where-Bedingung (Also implizite Joins) sind immer inner joins ( ausser bei Oracle (+))
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 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