webForumDet fria alternativet

Sortera på maxvärde från kolumn i annan tabell

Databaser & SQL

4 svar · 250 visningar · startad av Bluey

Medlem sedan dec. 200220 inlägg
Frågan#1

Det finns två tabeller, t1 och t2. Båda dessa tabeller har en gemensam nämnare, k1.
I t1 är k1 unik, men i t2 finns många poster med samma k1.
Jag vill hämta data från t1 men sortera efter en kolumn från t2 grupperat på k1.

SELECT t1.k2, t2.k2 FROM t1,t2 WHERE t1.k1=t2.k1 
GROUP BY t1.k1 ORDER BY t2.k2

Ovanstående kod fungerar, men jag vill sortera på maxvärdet från t2.k2 grupperat på k1. Hur?

Medlem sedan dec. 200012 464 inlägg
#2
SELECT t1.k2, max(t2.k2) as x  FROM t1,t2 WHERE t1.k1=t2.k1 
GROUP BY t1.k1 ORDER BY x desc
Medlem sedan dec. 200220 inlägg
#3

Trodde bestämt jag hade provat det, men uppenbarligen fungerar det ju. Tack!
Men först nu märker jag att det blir problem.
Enligt koden så hämtas bara data där t1.k1=t2.k1, d.v.s. om t2 ännu inte innehåller data visas inte heller innehållet från t1.
Hur kan jag gardera mig mot detta?

Medlem sedan dec. 200012 464 inlägg
#4

Man använder sig av en outer join.

SELECT t1.k2, max(t2.k2) as x  FROM t1 left join t2 
on t1.k1=t2.k1 
GROUP BY t1.k1 ORDER BY x desc
Medlem sedan dec. 200220 inlägg
#5

Funkar finfint - som vanligt när du skriver kod ;)
Tackar och bockar!

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)