Problem:
ønsker at gange værdier fra to kolonner i en tabel.
Eksempel:
Vores database har en tabel med navnet purchase med data i følgende kolonner:id , name , price , quantity , og discount_id .
| id | navn | pris | mængde | rabat_id |
|---|---|---|---|---|
| 1 | pen | 7 | 3 | 1 |
| 2 | notesbog | 5 | 8 | 2 |
| 3 | gummi | 11 | 3 | 1 |
| 4 | penalhus | 24 | 2 | 3 |
Lad os gange prisen med mængden af produkterne for at finde ud af, hvor meget du har betalt for hver vare i din ordre.
Løsning:
SELECT name, price*quantity AS total_price FROM purchase;
Denne forespørgsel returnerer poster med navnet på produktet og dets samlede pris:
| navn | total_price |
|---|---|
| pen | 21 |
| notesbog | 40 |
| gummi | 33 |
| penalhus | 48 |
Diskussion:
Skal du vælge navnet på hver post (i vores tilfælde name ) og beregne resultatet af at gange en numerisk kolonne med en anden (price og quantity )? Alt du skal gøre er at bruge multiplikationsoperatoren (*) mellem de to multiplikand-kolonner (price * quantity ) i en simpel SELECT forespørgsel. Du kan give dette resultat et alias med AS søgeord; i vores eksempel gav vi multiplikationskolonnen et alias for total_price .
Bemærk, at du også kan bruge data fra to kolonner, der kommer fra forskellige tabeller. Vi har en anden tabel i vores database ved navn discount der har kolonner med navnet id og value; sidstnævnte repræsenterer den procentvise rabat på varen med det angivne ID.
| id | værdi |
|---|---|
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
Se på eksemplet nedenfor.
Løsning:
SELECT p.name, p.price*p.quantity*(100-d.value)/100 AS total_price FROM purchase p JOIN discount d ON d.id=p.discount_id;
Her er resultatet:
| navn | total_price |
|---|---|
| pen | 18.90 |
| notesbog | 32.00 |
| gummi | 29.70 |
| penalhus | 33.60 |
Som du kan se, er det ret nemt at multiplicere værdier fra forskellige sammenføjede tabeller. I vores eksempel ovenfor multiplicerede vi prisen på hvert produkt med dets mængde fra én tabel (purchase ) og gange derefter denne samlede pris med procentrabatten ved hjælp af discount tabel.