---
title: "\"Bestseller\" prob."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/178254-bestseller-prob"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Doja"
published: "2009-04-24T05:33:50.000Z"
updated: "2009-04-27T09:13:10.000Z"
replies: 15
views: 881
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/178254-bestseller-prob"
---

# "Bestseller" prob.

## #1 — Doja, 2009-04-24T05:33Z

Antagligen en sjukt lätt fråga för er masters, men jag har testat så många olika alt. nu så...

Jag vill få nedanstående SQLfråga sorterad på "Total_Quantity". 

'Select ProductID,Name,SUM(Quantity) AS "Total_Quantity" from orders_details GROUP BY ProductID,Name';

Man kan få den  sorterad på (ORDER BY) Name & ProductID, men jag vill ju ha den med flest sålda överst...

Hur gör jag?

Permalänk: https://www.webforum.nu/p/178254

## #2 — @nders, 2009-04-24T05:45Z

Du skriver inte vad du använder för dbms, men hade det varit Microsoft SQL Server hade jag skrivit så här:

```
Select ProductID, Name, SUM(Quantity) AS Total_Quantity 
from orders_details 
GROUP BY ProductID, Name 
ORDER BY 3 DESC
```

Funkar nog i Access också - men i andra dbms vet jag inte. Kanske man kan använda *Total_Quantity* i order by i vissa dbms.

Permalänk: https://www.webforum.nu/p/2182943

## #3 — Doja, 2009-04-24T08:26Z

Underbart! Tack så mycket! Funkar perf.!

Permalänk: https://www.webforum.nu/p/2182968

## #4 — @nders, 2009-04-24T08:58Z

Vasse! Och välkommen hit! :bire

Permalänk: https://www.webforum.nu/p/2182972

## #5 — Doja, 2009-04-25T09:25Z

&quot;månadens&quot; Bestseller

Hej igen!

Jag vill plocka datum från en annan tabell (orders.Levererad), så jag har skrivit ihop något som liknar det jag vill åstakomma, förutom att jag inte vill GROUP BY OrderID (som jag måste ha för kopplingens skull) & Levererad. 

Jag får inte unika ProductID med OrderID & Levererad, men utan dem får jag felmeddelande...

Såhär ser koden ut f.n.:

```
SELECT d.ProductID, d.Name, d.OrderID,  o.OrderID, o.Levererad, SUM(d.Quantity) AS "Total_Quantity" 
FROM orders_details d, orders o 
WHERE d.OrderID = o.OrderID AND o.Levererad LIKE '%2009-03%' 
GROUP BY ProductID, d.Name, d.OrderID,  o.OrderID, o.Levererad ORDER BY 6 DESC
```

(anv. Microsoft Access)

Permalänk: https://www.webforum.nu/p/2183078

## #6 — Lasp, 2009-04-25T10:09Z

Hej Doja och välkommen till wF!
Är det inte så att de exemple du anger är kurslitteratur och därmed Skollösningar som du är ute efter?
Tror du att du blir attraktiv hos arbetsgivare om du talar om att andra har gjort ditt jobb?

Permalänk: https://www.webforum.nu/p/2183083

## #7 — Doja, 2009-04-25T11:08Z

Skollösningar? :) Är det så enkelt, eller är det fint uppställt? ;)

Nä, jag är ganska nybörjare på SQL, och har sökt lite runt om på nätet, men inte hittat ngt som riktigt får mig att förstå hur jag kan lösa mitt prob.

ps. ingen skola. Pappaledig. Cellolärare. ds.

Permalänk: https://www.webforum.nu/p/2183085

## #8 — Lasp, 2009-04-25T13:38Z

Jag ber om ursäkt i så fall Doja. Det finns flera databasexempel som har just författare och böcker som exempel. Fel slutsats av mig då ;-(
SQL är ett kraftfullt verktyg, vilken databasmotor är du mest intresserad av då?

Permalänk: https://www.webforum.nu/p/2183095

## #9 — Doja, 2009-04-25T13:59Z

ODBC Microsoft Access?

Permalänk: https://www.webforum.nu/p/2183096

## #10 — LarsG, 2009-04-25T17:30Z

Vad får du för resultat med ovanstående fråga och vilket resultat vill du ha?

Permalänk: https://www.webforum.nu/p/2183114

## #11 — Doja, 2009-04-26T14:46Z

Jag får data från alla fälten, sorterat på "Total_Quantity" (d.Quantity), men ProductID förekommer på fler än ett ställe.

Koden i inlägg #5, är perf. men jag behöver begränsa resultatet med Levererad som kommer från en annan tabell - orders. OrderID är kopplingen mellan tabellerna.

Permalänk: https://www.webforum.nu/p/2183164

## #12 — LarsG, 2009-04-26T16:58Z

Varför har du med  d.OrderID,  o.OrderID, o.Levererad, i select-listan och group by?

Det dör en kattunge varje gång någon använder like på datum.

```
 o.Levererad between '2009-03-01' and '2009-03-31'
```

Permalänk: https://www.webforum.nu/p/2183172

## #13 — Doja, 2009-04-26T18:53Z

> **[LarsG skrev:](https://www.webforum.nu/p/1465896)**
>
> Varför har du med  d.OrderID,  o.OrderID, o.Levererad, i select-listan och group by?
> 
> Det dör en kattunge varje gång någon använder like på datum.
> 
>
>
> ```
>  o.Levererad between '2009-03-01' and '2009-03-31'
> ```

Bra fråga LarsG! När jag plockade bort lite grejs, vart det bättre;

```
SELECT DISTINCT(d.ProductID), SUM(d.Quantity) AS 'Total_Quantity' 
FROM orders_details d, orders o 
WHERE d.OrderID = o.OrderID AND
 o.Levererad LIKE '%2009-03%' 
GROUP BY ProductID 
ORDER BY 2 DESC
```

Däremot så sa programmet "Typblandningsfel i villkorsuttryck" när jag petade in din lilla "between" i stället för den kissemissdödande LIKE (med % dessutom)  :q

Jaja, jag är inte så värst förtjust i katter ändå...

Tack alla för hjälpen, o ledsen om frågan var tråkig...

Permalänk: https://www.webforum.nu/p/2183190

## #14 — Doja, 2009-04-26T19:11Z

Istället för LIKE o datum så vart ju;

o.Levererad \> DateAdd('d',-30,Date())

mycket bättre.

Permalänk: https://www.webforum.nu/p/2183193

## #15 — LarsG, 2009-04-27T07:22Z

Om du tar bort distinct också, så blir jag nöjdare.

Permalänk: https://www.webforum.nu/p/2183222

## #16 — Doja, 2009-04-27T09:13Z

ok. Det är pga. att jag har GROUP BY ProductID va? Jag får ett lite annorlunda svar med DISTINCT. Varför?

Permalänk: https://www.webforum.nu/p/2183238

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/178254-bestseller-prob
