I början av Januari 2014 låstes Whoa och du kan alltså ej logga in eller skriva något nytt i forumen. Innehåll i forum osv kommer finnas tillgängligt. Läs Mer »

Mera SQL (t-SQL), TOP (alt MAX) + GROUP BY

Hobby & Fritid - Datorer & Teknik

   

2006-03-10 22:34

Mera SQL (t-SQL), TOP (alt MAX) + GROUP BY

Jag har en tabell där varje användare (uID) dyker upp flera gånger, med olika taskID för varje gång (ID). Jag skulle vilja hämta det högsta taskIDt samt lite mer information för varje användare. Hur gör man?

Tabellen ser ut ungefär så här:

ID | uID | status | projektNummer | start | stop

uID kommer alltså att repeteras ett antal gånger, och jag skulle vilja hämta det högsta IDt för varje uID. Hur går det till?

 

2006-03-11 00:08
Hmm, orkar inte kolla min "SQL-pärm" efter korrekt kod, men det borde väl se ut som något i denna stilen..
ORDER BY uID DESC LIMIT 1
Eller missade jag något nu? Känns som att jag gjorde det.. hehe.
Hur som helst så borde du ta en titt på PHPportalen Forum Index » Databaser. Mycket kunnigt folk som gärna svarar där!
Den narkotika som vi får in i Sverige kommer ju ofta från andra länder.
Laila Freiwalds

2006-03-11 01:05
SELECT uId, MAX(id) FROM tabell GROUP BY uID skulle också funka.
There are no stupid questions, just stupid people - Mr. Garrison

2006-03-11 01:16
u-nas om jag inte har helt fel så kommer din query endast returnera den raden med den högsta uid:n, dvs så kan han endast hämta den användaren som har högst uid, inte alla användare.
There are no stupid questions, just stupid people - Mr. Garrison

2006-03-11 04:51
fuck_this_shit förstod problemet (och LIMIT finns inte i t-SQL, då är det TOP som gäller). fuck_this_shit förslag fungerar, men inte om jag vill hämta fler kolumner än uID och ID, och det är mitt riktiga problem.
 

2006-03-11 07:09
Varför skulle du inte kunna hämta fler kolumner? Låter helt skevt ju.

Du kan ju alltid testa ifall det funkar med en subquery

SELECT uid, MAX(id), etc FROM tabell a WHERE uid IN (SELECT DISTINCT uid FROM tabell b) GROUP BY b.uid;
There are no stupid questions, just stupid people - Mr. Garrison

2006-03-11 09:57
fuck_this_shit

Om man använder GROUP BY måste alla kolumner antingen användas i GROUP BY eller en AGGREVATD FUNCTION (som MAX eller SUM), tydligen. Vilket är skitdåligt.

Jag ska prova den andra senare, jag provade en annan subquery-variant förut men fick inte riktigt det resultat jag väntade mig.