Avatar billede dr_demento Nybegynder
14. august 2005 - 16:07 Der er 6 kommentarer og
1 løsning

Mest solgte varer (top 10)

Hej eksperter.

Jeg skal ha lavet en "top 10" over mest solgte varer i en webbutik.

I mysql tabellen "varer_ordrer_mapping" ligger alle bestilte varer id'er i rækken "vareId"

Tabellen varer_ordrer_mapping ser sådan her ud:

vareId ordreId vareAntal
  113 10003 1
    88 10002 1
  160 10002 1
  181 10002 1
  183 10002 1
  181 10001 1
  183 10001 1
  160 10000 1
  181 10003 1
  116 10003 1
  104 10003 1

Hvordan laver man sådan en top10? er lidt på bar bund...
Det må være noget med mysql_num_rows og sum ?
Avatar billede imnewb Nybegynder
14. august 2005 - 16:08 #1
<?php
// din connection
$hent = mysql_query("SELECT * FROM varer_ordrer_mapping ORDER BY vareId DESC LIMIT 0,10");
while ($row = mysql_fetch_array($hent))
{
print "".$row[vareId]." - ".$row[ordreId]."<br />";
}
?>
Avatar billede schaefner Juniormester
14. august 2005 - 16:17 #2
SELECT `vareId`, COUNT(*) AS `total` FROM `varer_ordrer_mapping` GROUP BY `vareId` ORDER BY `total` DESC LIMIT 0,10
Avatar billede schaefner Juniormester
14. august 2005 - 16:19 #3
Eventuelt:

SELECT `vareId`, SUM(`vareAntal`) AS `total` FROM `varer_ordrer_mapping` GROUP BY `vareId` ORDER BY `total` DESC LIMIT 0,10
Avatar billede dr_demento Nybegynder
14. august 2005 - 16:22 #4
imnewb: Det returnerer :

183 - 10002
183 - 10001
181 - 10002
181 - 10001
181 - 10003
160 - 10002
160 - 10000
116 - 10003
113 - 10003
104 - 10003

Lidt mærkeligt, når der egentlig er flere af '181' end '183' ...
Yderligere skal der jo kun være een af hver vareid.
Avatar billede dr_demento Nybegynder
14. august 2005 - 16:27 #5
schaefner:
Dit første forslag returnerer:

181
160
183
113
88
116
104

Så det er jo faktisk lige præcis det jeg var på udkig efter! =)
Avatar billede schaefner Juniormester
14. august 2005 - 16:33 #6
Ja, hvis vareAntal kun indeholder 1, så kan du bruge den første. Men ellers bør du bruge nummer 2.

@ Jesper Sørensen
Avatar billede imnewb Nybegynder
14. august 2005 - 16:40 #7
<?php
// din connection
$hent = mysql_query("SELECT * FROM varer_ordrer_mapping ORDER BY vareId DESC LIMIT 0,10 GROUP BY varerId");
while ($row = mysql_fetch_array($hent))
{
print "".$row[vareId]." - ".$row[ordreId]."<br />";
}
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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