Avatar billede JacoDK Nybegynder
14. august 2014 - 19:38 Der er 6 kommentarer og
1 løsning

Udregning i MySQL forespørgsel

Hej Eksperter,

Sidder med et lille problem, hvor jeg ønsker at lave en udregning i min MySQL forespørgsel. Min forspørgsel henter en linje, hvori der er en pris og et antal i et kommasepareret felt.

Kort fortalt ser mit felt således ud
ID    Beskrivelse              Product          Amount          Pris
1      produktGruppe        123,321        10,2.5            10,20

Altså indeholder produktGruppe to produkter ved nummer 123,321, hvor 123 har 10 stk i antal og 321 har 2.5 i antal.

Spørgsmålet er, hvordan laver jeg en split/explode af kommaet, og hvordan kan jeg lave en udregning på dette ?

Resultatet af produkt 123 skulle gerne være 10*10 = 100,-

På forhånd tak :)
Avatar billede moddi100 Seniormester
14. august 2014 - 20:10 #1
Normalt søger man at undgå kommasepareret data i et felt i databasen. Netop fordi operationer som den du ønsker at foretage pludselig bliver ret komplekse.

Opret i stedet for en ekstra tabel, hvor du har produkterne i for sig selv:

Tabel "produkter":
ID  Navn    Antal    Pris  Produktgruppe
123  Hat      10      10    1
321  Sko      2.5      20    1
321  Æble    30        5    2

Tabel "produktgruppe"
ID  Beskrivelse
1    Tøj
2    Mad
Avatar billede JacoDK Nybegynder
14. august 2014 - 21:12 #2
Hej moddi100,

Kan godt følge dig, dog har min database med produkter over 1/2 million forskellige unikke id'er, og bliver hentet i forskellige kombinationer og antal.

I bund og grund er produktgruppen et "produkt", som er sammensat af en masse små produkter. Produktgruppen/produktet kan derfor indeholde 10 stk 123 produkter, hvor en anden produktgruppe/produkt kun indeholder 1 stk 123 produkt.

Ved ikke om det giver mening det jeg forklarer :), men håber du kan følge mig.
Avatar billede moddi100 Seniormester
14. august 2014 - 21:32 #3
Det kan jeg sagtens følge dig i, men jo mere kompleks produktgruppen er, desto mere mening giver det at anvende strukturen fra #1.

Bemærk at der netop er plads til lige så mange produkter som du ønsker i hver produktgruppe, og at det er super simpelt at tilføje og fjerne produkter fra disse produktgrupper.

Anvender du den foreslåede struktur bliver din SQL-forespørgsel så simpel som:

SELECT `ID`, `Beskrivelse`, `Amount` * `Pris` AS `Total` FROM `produkter`
Avatar billede JacoDK Nybegynder
17. august 2014 - 10:14 #4
Ja, den bliver meget mere simpel ved det, men det ville være rart hvis udregningen kunne være i forespørgslen. Men kan selvfølgelig lave min udregning i PHP, hvor den laver en opdeling ud fra komma.

Du må gerne lægge et svar.
Avatar billede moddi100 Seniormester
17. august 2014 - 10:35 #5
Princippet er jo netop at der i #3 foretages en udregning i SQL:

[DIV]Amout * Pris AS Total[/div]

Siger at indholdet i kolonnen "Amount" skal ganges med indholdet i kolonnen "Pris" og resultatet kalder vi "Total". Når du så henter en række ud fra databasen, vil kolonnen Total være dit resultat.
Avatar billede JacoDK Nybegynder
29. september 2014 - 10:47 #6
Du må gerne lægge et svar Moddi100, bliver ved med at få e-mails omkring lukning af dette spørgsmål.
Avatar billede moddi100 Seniormester
29. september 2014 - 16:16 #7
Værs'go :)
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