Joina tre tabeller?

Databaser & SQL

2 svar · 669 visningar · startad av casca

Medlem sedan feb. 20005 891 inlägg
Trådstart#1

Ja, jag vet inte om rubriken är helt korrekt men detta är iaf mitt problem:

Queryn i sin nuvarande form ser ut så här:

SQL-fråga: SELECT g.Id, g.GroupId, g.ClassId, g.TeamA_Id, g.TeamB_Id FROM Game g WHERE g.CupId = '1' LIMIT 0, 30 ;

Id 	GroupId 	ClassId 	TeamA_Id 	TeamB_Id
1 	1 	        1 	        3 	        4
2 	6 	        6 	        18 	        19

Detta representerar två "matcher". I en annan tabell, Team, har jag ID, namn osv. för varje lag som deltar, och skulle nu vilja hämta lagnamnet istället för enbart ID... men hur gör jag det?

Säg att lag-ID 3 har namnet "Lag 1" i den andra tabellen, då vill jag skriva ut följande:

Id 	GroupId 	ClassId 	TeamA_Id 	TeamB_Id
1 	1 	        1 	        Lag 1 	        Lag 2
2 	6 	        6 	        Lag 3 	        Lag 4

Får ut t.ex TeamA_Id's lagnamn genom en join, men hur gör man när det är två olika värden?

Medlem sedan juni 200032 967 inlägg
#2

Du kanske får ändra fältnamnen, men det förstår du nog. Antar jag. :)

SELECT g.Id, g.GroupId, g.ClassId, team1.name, team2.name 
FROM Game g 
INNER JOIN Team team1 
	ON g.TeamA_ID = team1.id
INNER JOIN Team team2
	ON g.TeamB_ID = team2.id
WHERE g.CupId = '1' 
LIMIT 0, 30 ;
Medlem sedan feb. 20005 891 inlägg
#3

Tack @nders, löste också problemet själv, men för kunskapens skull är det bra med utförliga lösningar... ;)

Så här gjorde iaf jag, innerjoinade med en join:

SELECT g.Id, g.GroupId, g.ClassId, t.TeamName, t2.TeamName
FROM Game g INNER JOIN Team t ON g.TeamA_Id = t.Id JOIN Team t2 ON g.TeamB_Id = t2.Id
WHERE g.CupId = '1'
263 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)