webForumDet fria alternativet

Hämta 10 ordrar från varje "statusvärde"

Databaser & SQL

5 svar · 320 visningar · startad av Dannelelle

Medlem sedan juni 200055 inlägg
Frågan#1

Har ett ordersystem för en webbshop där alla ordrarna ligger i en tabell som heter "Ordrar". Varje order har ett fält som heter "status" som berättar hur långt beställningen har behandlats.

T.ex. 0 = ej behandlad, 1 = ej paketerad, 2 = ej skickad osv...

Nu skulle jag med ett SQL-villkor vilja få ut de tio första posterna med status 0, de tio första med status 1 osv.

Blev för knivigt för mig att lösa... :( Nån som har nåt tips på hur man börjar? Om det ens går...

Medlem sedan juni 200032 967 inlägg
#2

En bra början är att ange vilken dbms man använder.

Medlem sedan dec. 200012 464 inlägg
#3

tio första posterna

först i vilket hänseende?

Medlem sedan juni 200055 inlägg
#4

Jag använder MS Access...

Tänkte de 10 senaste inlagda posterna. (ORDER BY ID DESC)

Tacksam för svar...

Medlem sedan dec. 200012 464 inlägg
#5
select t1.kolumn1,t1.kolumn2,...
from t as t1
inner join t as t2 on t1.status = t2.status
and t1.id <= t2.id 
group by t1.kolumn1,t1.kolumn2,...
having count(*) <= 10

dvs, alla kolumner i select-listan måste också vara med i group by

Medlem sedan juni 200055 inlägg
#6

Mången tack för det korrekta och snabba svaret :)

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)