08. august 2004 - 21:52Der er
9 kommentarer og 1 løsning
Find mest solgte
hej,
Jeg har en webshop, hvor jeg har en tabel med ordre. Ordrerne kan være uafsluttet eller afsluttet, jeg sætter en felt i tabellen til 1, hvis den er afsluttet.
Jeg har så en anden tabel med de varer, som hører til ordrerne. Dvs en tabel, hvor jeg henviser til et varer-nummer og et ordrenummer, samt varens pris.
Jeg vil så gerne lave en oversigt over de mest solgte varer. Dvs. en funktion, hvor alle afsluttede ordrer løbes igennem, og de varer som er tilknyttet afsluttede ordrer tælles sammen og sorteres efter dem med flest styk pr. varenummer.
Kan det gøres simpelt? Jeg bruger MySQL sammen med PHP på en Apache-server.
SELECT ordrelinie.varenummer,SUM(ordrelinie.styk) AS sum FROM ordre JOIN ordrelinie ON ordre.ordrenummer=ordrelinie.ordrenummer WHERE ordre.status=1 GROUP BY ordrelinie.varenummer ORDER BY sum DESC
Det er ordre-strukturen, hvor status er 1, hvis ordren skal tælles med.
id int(11) NOT NULL auto_increment, medlemnr int(11) NOT NULL default '0', oprettet int(11) NOT NULL default '0', bestilt int(11) NOT NULL default '0', status tinyint(4) NOT NULL default '0', fragt tinytext NOT NULL, fragtpris int(11) NOT NULL default '0', ipadresse text NOT NULL, betaling tinytext NOT NULL, bemaerk text NOT NULL, program tinytext NOT NULL, levnavn text NOT NULL, levadresse text NOT NULL, levpostnummer tinytext NOT NULL, levbyen tinytext NOT NULL,
Dette er strukturen på de varelinier, som har et varenummer, ordrenummer og pris tilknyttet:
id int(11) NOT NULL auto_increment, ordre int(11) NOT NULL default '0', vinid int(11) NOT NULL default '0', apris float NOT NULL default '0', antal int(11) NOT NULL default '0', dato int(11) NOT NULL default '0',
SELECT varelinie.vinid,SUM(varelinie.antal) AS sum FROM ordre JOIN varelinie ON ordre.id=varelinie.ordre WHERE ordre.status=1 GROUP BY varelinie.vinid ORDER BY sum DESC
$foresp = mysql_query("SELECT ordrevin.vinid,SUM(ordrevin.antal) AS sum FROM ordre JOIN ordrevin ON ordre.id=ordrevin.ordre WHERE ordre.status=1 GROUP BY ordrevin.vinid ORDER BY sum DESC");
while ($data = mysql_fetch_array($foresp)) { echo $data[0]; }
SELECT ordrevin.vinid,SUM(ordrevin.antal) AS sum FROM ordre JOIN ordrevin ON ordre.id=ordrevin.ordre WHERE ordre.status=1 GROUP BY ordrevin.vinid ORDER BY sum DESC LIMIT 0, 30
MySQL returnerede:
You have an error in your SQL syntax near 'ON ordre.id=ordrevin.ordre WHERE ordre.status=1 GROUP BY ordrevin.vinid ORDER BY' at line 1
SELECT ordrevin.vinid,SUM(ordrevin.antal) AS sum FROM ordre INNER JOIN ordrevin ON ordre.id=ordrevin.ordre WHERE ordre.status=1 GROUP BY ordrevin.vinid ORDER BY sum DESC LIMIT 0, 30
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.