Problem:
chcesz pomnożyć wartości z dwóch kolumn tabeli.
Przykład:
Nasza baza danych zawiera tabelę o nazwie purchase z danymi w następujących kolumnach:id , name , price , quantity i discount_id .
| id | imię | cena | ilość | discount_id |
|---|---|---|---|---|
| 1 | długopis | 7 | 3 | 1 |
| 2 | notatnik | 5 | 8 | 2 |
| 3 | guma | 11 | 3 | 1 |
| 4 | piórnik | 24 | 2 | 3 |
Pomnóżmy cenę przez ilość produktów, aby dowiedzieć się, ile zapłaciłeś za każdy przedmiot w swoim zamówieniu.
Rozwiązanie:
SELECT name, price*quantity AS total_price FROM purchase;
To zapytanie zwraca rekordy z nazwą produktu i jego całkowitą ceną:
| nazwa | całkowita cena |
|---|---|
| pióro | 21 |
| notatnik | 40 |
| guma | 33 |
| piórnik | 48 |
Dyskusja:
Czy musisz wybrać nazwę każdego rekordu (w naszym przypadku name ) i oblicz dla niego wynik mnożenia jednej kolumny numerycznej przez drugą (price i quantity )? Wszystko, co musisz zrobić, to użyć operatora mnożenia (*) między dwiema kolumnami mnożenia (price * quantity ) w prostym SELECT zapytanie. Możesz nadać temu wynikowi alias z AS słowo kluczowe; w naszym przykładzie nadaliśmy kolumnie mnożenia alias total_price .
Pamiętaj, że możesz również użyć danych z dwóch kolumn pochodzących z różnych tabel. W naszej bazie danych mamy kolejną tabelę o nazwie discount który ma kolumny o nazwie id i value; ta ostatnia reprezentuje procentową zniżkę na produkt o podanym identyfikatorze.
| id | wartość |
|---|---|
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
Spójrz na poniższy przykład.
Rozwiązanie:
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;
Oto wynik:
| nazwa | całkowita cena |
|---|---|
| pióro | 18,90 |
| notatnik | 32,00 |
| guma | 29,70 |
| piórnik | 33,60 |
Jak widać, dość łatwo jest pomnożyć wartości z różnych połączonych tabel. W powyższym przykładzie pomnożyliśmy cenę każdego produktu przez jego ilość z jednej tabeli (purchase ), a następnie pomnożyć tę całkowitą cenę przez procent rabatu, korzystając z opcji discount tabela.