Vấn đề:
muốn nhân các giá trị từ hai cột của bảng.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng tên là purchase
với dữ liệu trong các cột sau:id
, name
, price
, quantity
và discount_id
.
id | tên | giá | số lượng | discount_id |
---|---|---|---|---|
1 | bút | 7 | 3 | 1 |
2 | sổ tay | 5 | 8 | 2 |
3 | cao su | 11 | 3 | 1 |
4 | hộp đựng bút chì | 24 | 2 | 3 |
Hãy nhân giá với số lượng sản phẩm để biết số tiền bạn đã trả cho mỗi mặt hàng trong đơn đặt hàng của mình.
Giải pháp:
SELECT name, price*quantity AS total_price FROM purchase;
Truy vấn này trả về các bản ghi có tên của sản phẩm và tổng giá của sản phẩm:
name | total_price |
---|---|
bút | 21 |
sổ tay | 40 |
cao su | 33 |
hộp đựng bút chì | 48 |
Thảo luận:
Bạn có cần chọn tên của từng bản ghi không (trong trường hợp của chúng tôi là name
) và tính toán kết quả của việc nhân một cột số với một cột khác (price
và quantity
)? Tất cả những gì bạn cần làm là sử dụng toán tử nhân (*) giữa hai cột bội và (price
* quantity
) trong một SELECT
đơn giản truy vấn. Bạn có thể đặt bí danh cho kết quả này bằng AS
từ khóa; trong ví dụ của chúng tôi, chúng tôi đã đặt cho cột nhân một bí danh là total_price
.
Lưu ý rằng bạn cũng có thể sử dụng dữ liệu từ hai cột đến từ các bảng khác nhau. Chúng tôi có một bảng khác trong cơ sở dữ liệu của chúng tôi có tên discount
có các cột có tên id
và giá trị value
; cái sau đại diện cho phần trăm chiết khấu đối với mặt hàng có ID nhất định.
id | giá trị |
---|---|
1 | 10 |
2 | 20 |
3 | 30 |
Hãy xem ví dụ bên dưới.
Giải pháp:
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;
Đây là kết quả:
name | total_price |
---|---|
bút | 18.90 |
sổ tay | 32,00 |
cao su | 29,70 |
hộp đựng bút chì | 33.60 |
Như bạn có thể thấy, khá dễ dàng để nhân các giá trị từ các bảng đã nối khác nhau. Trong ví dụ của chúng tôi ở trên, chúng tôi đã nhân giá của mỗi sản phẩm với số lượng của nó từ một bảng (purchase
) và sau đó nhân tổng giá này với phần trăm chiết khấu bằng cách sử dụng discount
bảng.