Problém:
chcete vynásobit hodnoty ze dvou sloupců tabulky.
Příklad:
Naše databáze obsahuje tabulku s názvem purchase
s údaji v následujících sloupcích:id
, name
, price
, quantity
a discount_id
.
id | jméno | cena | množství | id_slevy |
---|---|---|---|---|
1 | pero | 7 | 3 | 1 |
2 | notebook | 5 | 8 | 2 |
3 | guma | 11 | 3 | 1 |
4 | penál | 24 | 2 | 3 |
Vynásobme cenu množstvím produktů, abychom zjistili, kolik jste zaplatili za jednotlivé položky v objednávce.
Řešení:
SELECT name, price*quantity AS total_price FROM purchase;
Tento dotaz vrací záznamy s názvem produktu a jeho celkovou cenou:
name | celková_cena |
---|---|
pero | 21 |
notebook | 40 |
guma | 33 |
penál | 48 |
Diskuse:
Potřebujete vybrat název každého záznamu (v našem případě name
) a vypočítejte pro něj výsledek vynásobení jednoho číselného sloupce druhým (price
a quantity
)? Vše, co musíte udělat, je použít operátor násobení (*) mezi dvěma sloupci multiplikátu (price
* quantity
) v jednoduchém SELECT
dotaz. Tomuto výsledku můžete přiřadit alias pomocí AS
klíčové slovo; v našem příkladu jsme dali sloupci násobení alias total_price
.
Všimněte si, že můžete také použít data ze dvou sloupců pocházejících z různých tabulek. V naší databázi máme další tabulku s názvem discount
který má sloupce s názvem id
a value
; druhý představuje procentuální slevu na položku s daným ID.
id | hodnota |
---|---|
1 | 10 |
2 | 20 |
3 | 30 |
Podívejte se na příklad níže.
Řešení:
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;
Zde je výsledek:
name | celková_cena |
---|---|
pero | 18,90 |
notebook | 32,00 |
guma | 29,70 |
penál | 33,60 |
Jak vidíte, je docela snadné násobit hodnoty z různých spojených tabulek. V našem příkladu výše jsme cenu každého produktu vynásobili jeho množstvím z jedné tabulky (purchase
) a poté tuto celkovou cenu vynásobte procentuální slevou pomocí discount
tabulka.