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

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