13. august 2009 - 11:00Der er
10 kommentarer og 1 løsning
SQL COUNT i en JOIN sætning (Nemme point for en SQL haj :)
Hej gutter,
Jeg skal have lavet en SQL sætning, der giver mig et udtræk over mest solgt varer i mit shopsystem. Det gør jeg ved at SELECTE varelinier der tilhører aktive eller afsluttede ordrer. Således:
SELECT v.vareId, v.ordreId, o.id, o.status FROM Shop_Ordrer o, Shop_Varelinier v WHERE v.ordreId = o.id AND (o.status = 'aktiv' OR o.status = 'afsluttet')
Dette giver mig dog en lang liste over varelinier der tilhører færdige ordrer. Jeg vil gerne have talt dem sammen, således jeg får endnu en liste over vareId og antal gange hvert vareId optræder, fordi det vil give mig det antal gange det vareId er solgt :) Jeg håber I forstår :)
Og hvis den er rigtig fræk, så er den ORDER by mest solgte vare :)
Et gæt SELECT COUNT(DISTINCT v.vareId) as antal FROM Shop_Ordrer o, Shop_Varelinier v WHERE v.ordreId = o.id AND (o.status = 'aktiv' OR o.status = 'afsluttet') order by antal
Eller SELECT v.vareId, COUNT(*) as antal FROM Shop_Ordrer o, Shop_Varelinier v WHERE v.ordreId = o.id AND (o.status = 'aktiv' OR o.status = 'afsluttet') GROUP BY v.vareId ORDER BY antal
Hvis jeg fjerner ORDER delen, så virker det, men selvfølgelig uden sortering. Jeg kan ikke bare skrive "ORDER BY antal". Den retter det automatisk til "ORDER by v.antal"...
Du får point for dit svar, da det jo løser hoveddelen af opgaven. Kan stadig ikke få den sorteret, og har prøvet en del forskelligt. Den konflikter med "group by".
Tror det er MSSQL. GROUP BY (og så alle de kolonner du forespørger på) - kolonne 1, kolonne 2 osv. Behøver kun bruge en i MySQL, alle i f eks Oracle, men er ikke sikker i MSSQL.
Efter at have kigget på screen shots kan jeg godt se at det er SQLServer.
Det var dog alligevel værd at prøve.
SQLServer er ligesom Oracle - det er kun MySQL some er speciel på det område.
Men antal er jo rent faktisk en aggregeret funktion.
Synes godt om
Ny brugerNybegynder
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.