Avatar billede jwulff Nybegynder
23. juni 2008 - 12:27 Der er 1 kommentar og
1 løsning

Vælg laveste pris

Hej exp,

Jeg har nedenstående SQL kode, men har et problem i det der kan være flere "pp.produktNr" med forskellige priser. Hvordan vælges det produkt med den laveste pris? (kan man evt. bytte pp.pris ud med MIN(pp.pris)?)

SELECT navn, SUM(pp.pris * od.antal *(1-od.rabat)) AS oms, Count(o.ordreNr) as antal_ordre,
SUM(pp.pris * od.antal *(1-od.rabat)) / Count(o.ordreNr) AS gns
FROM Ordre o, Ordredetaljer od, Produkter p, Produktpriser pp Kunder k
WHERE k.kundeNr = o.kundeNr AND o.ordreNr = od.ordreNr AND od.produktNr =
pp.produktNr AND o.opr_dato
BETWEEN 01-01-2008 AND 31-12-2008
GROUP BY k.kundeNr

Produktpriser ser således ud:

Produktpriser(#produktNr: int, #leverandoerNr: int, pris: int)

Håber I kan hjælpe!

Mvh.
Jacob
Avatar billede nur0701 Nybegynder
25. juni 2008 - 21:32 #1
Du kan eventuelt tilføje en "ORDER BY", altså sådan her: "ORDER BY pris ASC". Synes ikke jeg kan se at du har brugt den, men kunne være et forslag. "ASC" fortæller den at den skal starte fra laveste værdi og gå op ad. Hvis det vender forkert kan du prøve med "DESC".

Håber det hjælper.
Avatar billede gnoname Praktikant
09. juli 2008 - 00:03 #2
Du har selv svaret, altså du skal genske rigtigt benytte MIN():

SELECT navn,
      SUM(MIN(pp.pris) * od.antal *(1-od.rabat)) AS oms,
      Count(o.ordreNr) as antal_ordre,
      SUM(MIN(pp.pris) * od.antal *(1-od.rabat)) / Count(o.ordreNr) AS gns
FROM  Ordre o,
      Ordredetaljer od,
      Produkter p,
      Produktpriser pp Kunder k
WHERE  k.kundeNr = o.kundeNr
AND    o.ordreNr = od.ordreNr
AND    od.produktNr = pp.produktNr
AND    o.opr_dato BETWEEN 01-01-2008 AND 31-12-2008
GROUP BY k.kundeNr
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
Computerworld tilbyder specialiserede kurser i database-management

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