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 DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
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: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 />"; }