17. maj 2018 - 10:31Der er
6 kommentarer og 1 løsning
SQL group by
Hej
Jeg har en ordrerline tabel hvor der bl.a. er nedenstående felter id produktId produktSubId Navn Antal Pris....... 1 12 NULL Navn 1 5 10 2 14 1 Navn 2 2 15 3 14 2 Navn 3 3 20 4 12 NULL Navn 1 4 10 5 13 1 Navn 4 6 30 6 14 2 Navn 3 1 20
Jeg henter pt hvor den benytter SUM(Antal*Pris) og SUM(Antal) og benytter GROUP BY på produktId
Men det betyder at dem der har et andet produktSubId bliver talt med
Jeg vil gerne hente så jeg fik følgende resultat Navn Sum(Antal*Pris) SUM(Antal) Navn 1 90 9 Navn 2 30 2 Navn 3 80 4 Navn 4 180 6
Jeg bruger nu GROUP BY productid - men så lægger den id 2, 3 og 6 sammen fordi den har samme produktid
Arne: Ja det kunne virke. Men navnet gemmes i ordrelinjetabellen når køb foretages så der altid står det rigtige. Men navnet på produktet kan ændres. Så hvis man f.eks. ændre navnet på produktet til "Navn 2 (Nyt)" så vil den tælle dem som 2 forskellige selvom de har samme produktid og subid
Jeg skulle lige bruge et øjeblik på at forstå dig, men tror det du ønsker er en dobbelt group by:
select navn, Sum(antal*pris), Sum(antal) from tabel group by produktId,navn order by navn;
altså "group by produktId,navn" så starter den med produktId og navn efterfølgende.
Resultatet af sql ovenfor er du du har efter spurgt: Navn Sum(Antal*Pris) SUM(Antal) Navn 1 90 9 Navn 2 30 2 Navn 3 80 4 Navn 4 180 6
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.