Problem:
vill multiplicera värden från två kolumner i en tabell.
Exempel:
Vår databas har en tabell som heter purchase med data i följande kolumner:id , name , price , quantity och discount_id .
| id | namn | pris | kvantitet | rabatt_id |
|---|---|---|---|---|
| 1 | penna | 7 | 3 | 1 |
| 2 | anteckningsbok | 5 | 8 | 2 |
| 3 | gummi | 11 | 3 | 1 |
| 4 | pennfodral | 24 | 2 | 3 |
Låt oss multiplicera priset med antalet produkter för att ta reda på hur mycket du betalade för varje vara i din beställning.
Lösning:
SELECT name, price*quantity AS total_price FROM purchase;
Den här frågan returnerar poster med produktens namn och dess totala pris:
| namn | total_price |
|---|---|
| penna | 21 |
| anteckningsbok | 40 |
| gummi | 33 |
| pennfodral | 48 |
Diskussion:
Behöver du välja namnet på varje post (i vårt fall name ) och beräkna resultatet av att multiplicera en numerisk kolumn med en annan (price och quantity )? Allt du behöver göra är att använda multiplikationsoperatorn (*) mellan de två multiplikatkolumnerna (price * quantity ) i en enkel SELECT fråga. Du kan ge detta resultat ett alias med AS nyckelord; i vårt exempel gav vi multiplikationskolumnen ett alias för total_price .
Observera att du även kan använda data från två kolumner som kommer från olika tabeller. Vi har en annan tabell i vår databas som heter discount som har kolumner med namnet id och value; den senare representerar den procentuella rabatten på varan med angivet ID.
| id | värde |
|---|---|
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
Titta på exemplet nedan.
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;
Här är resultatet:
| namn | total_price |
|---|---|
| penna | 18.90 |
| anteckningsbok | 32.00 |
| gummi | 29.70 |
| pennfodral | 33.60 |
Som du kan se är det ganska enkelt att multiplicera värden från olika sammanfogade tabeller. I vårt exempel ovan multiplicerade vi priset för varje produkt med dess kvantitet från en tabell (purchase ) och multiplicerade sedan detta totala pris med den procentuella rabatten med discount bord.