ObbelixMedlem sedan okt. 2002257 inlägg Undrar hur jag ska få ut en topplista (typ topp 10) utifrån detta:
Har en tabell där det bl.a sparas vilka spelar-id:n som blivit matchens lirare, en för hemmalaget och en för bortalaget.
Nu skulle jag vilja få ut vilka som blivit matchens lirare flest gånger.
ex.
[b]Tabell 1[/b]
homeplayer | awayplayer
-----------------------
12 23
23 31
12 21
[b]Tabell 2[/b]
id | namn
-----------
12 Peter
21 Kalle
23 Olle
31 Pelle
Och vill då få ut:
Spelare | Antal
----------------
Peter 2
Olle 2
Kalle 1
Pelle 1
Går det att få ut i en och samma fråga?
Använder MSSQL.
LarsGMedlem sedan dec. 200012 464 inlägg select namn,count(*) as antal
from (
select homeplayer
from t2
union all
select awayplayer
from t2) dt
inner join t1 on t1.id = dt.homeplayer
group by namn
order by antal desc
ObbelixMedlem sedan okt. 2002257 inlägg Tackar!
Funkar bra, men jag kom på att det finns flera fält jag vill få ut från tabellen "t1" samt även göra en inner join på fältet "team_id" i t1 mot tabellen "teams", fält "id" och därifrån få med fältet "team_name". Så om det går att få ut resultatet så här vore det klockrent!
[b]Resultat[/b]
id | namn | team_id | team_name | antal
----------------------------------------
12 Peter 22 Testlag 2
/red: Testade att lägga till flera fält efter "select namn", men det ville inte funka
LarsGMedlem sedan dec. 200012 464 inlägg select id,namn,team_id,team_name,count(*) as antal
from (
select homeplayer
from t2
union all
select awayplayer
from t2) dt
inner join t1 on t1.id = dt.homeplayer
inner join teams on t1.team_id = teams.team_id
group by id,namn,team_id,team_name
order by antal desc
Om du lägger till kolumner i select-listan så måste dessa även ingå i group by.
ObbelixMedlem sedan okt. 2002257 inlägg Jihaa! Precis som jag ville ha det!
Tack LarsG! (Guden av SQL-frågor) :)