webForumDet fria alternativet

Joina tre tabeller?

2 svar · 662 visningar · startad av casca

cascaMedlem sedan feb. 20003 262 inlägg
#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?

@ndersMedlem sedan juni 200026 914 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 ;
cascaMedlem sedan feb. 20003 262 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'
126 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
123 ms — hämta tråd, inlägg och bilagor (db)