Avatar billede hyperactive Nybegynder
02. marts 2004 - 20:25 Der er 8 kommentarer og
1 løsning

Vælg top 10 solgte varer

Jeg har en tabel, der hedder OrderItems...

Denne relaterer til tabellen Orders via feltet OrderId og tabellen Products via feltet ProductId. Tabellen indeholder varer, der er solgt...

Jeg vil gerne lave en SQL sætning, som henter de 10 mest solgte varer...

Hvordan gør jeg?
Avatar billede codebase Praktikant
02. marts 2004 - 23:53 #1
Hvis jeg forstår dig rigtig, har du en relationstabel der hedder OrderItems. Forudsat dette er rigtig kunne du nok gøre følgende.

SELECT OrderItems.OrderId, COUNT(OrderItems.OrderId) AS C FROM OrderItems
GROUP BY OrderId ORDER BY C DESC LIMIT 0,10;

Hvis denne query henter de 10 mest købte produkter, er det kun at join produkt tabellen på ovenstående query.

Hvis det er helt forkert opfattet, må du lige give et eks på dine tabeller.
eks:
OrderItems
OrderId ProductId
Avatar billede rasmusbg Nybegynder
03. marts 2004 - 00:15 #2
Jeg ved ikke om det virker, og om jeg har forstået opbygningen af tabellerne rigtigt, men dette er mit bud:

SELECT ProductName, antal
FROM
(SELECT ProductId, antal
FROM
  (SELECT OrderId, COUNT(*) AS antal
  FROM Order
  GROUP BY OrderId)
  JOIN OrderItems ON Order.OrderId = OrderItems.OrderId)
JOIN Products ON OrderItems.ProductId = Products.ProductId
ORDER BY antal DESC
TOP 10

Hvis det ikke fungerer, må du lige skrive, så kan jeg kigge på det...
Avatar billede runesoft Nybegynder
03. marts 2004 - 12:40 #3
Jeg tror i tæller noget forkert. I tæller orderId, hvilket vil sige at I får de ordre med flest varer. Istedet skal der grupperes efter productID

Select top 10 productId, count (productId) as antal from OrderItems products group by productID order by antal
Avatar billede runesoft Nybegynder
03. marts 2004 - 12:44 #4
hov, der var lidt ekstra unødvendig kode:

Select top 10 productId as ref, count (productId) as antal from OrderItems group by productID order by antal
Avatar billede rasmusbg Nybegynder
03. marts 2004 - 12:44 #5
Hyperactive > kan du ikke fortælle, hvad det er der er indeholdt i de forskellige tabeller? Specielt hvilken tabel, der holder styr på hvormange antal af det enkelte produkt, der er solgt.
Avatar billede runesoft Nybegynder
03. marts 2004 - 12:56 #6
rasmusbg >> jeg kan da ikke se at det kan være andre tabeller end OrerItems. Det kan da godt være at der er et antal felt på denne, men det skal i så fald summeres istedet for tælles når rækkerne bliver grupperet
Avatar billede hyperactive Nybegynder
04. marts 2004 - 12:00 #7
SET RowCount @NumberOfItems
SELECT OrderItems.SKU, ProductSKUs.ProductId, ProductSKUs.Description, SUM(OrderItems.Quantity) AS QtySold FROM OrderItems, ProductSKUs WHERE OrderItems.SKU = ProductSKUs.SKU AND Special = 0 GROUP BY ProductSKUs.ProductId, OrderItems.SKU, ProductSKUs.Description ORDER BY QtySold DESC;

Det blev løsningen
Avatar billede hyperactive Nybegynder
04. marts 2004 - 12:00 #8
Så kan @NuberOfItems defineres til f.eks. 10
Avatar billede runesoft Nybegynder
22. marts 2004 - 11:46 #9
fedtsyl! Den er for tynd.

Lær at stille dine spørgsmål, så de svarer til det du vil have at vide.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester