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 ?
Annonceindlæg fra Infor
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 />"; } ?>
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
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
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.
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! =)
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
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 />"; }
Vi tilbyder markedets bedste kurser inden for webudvikling