Phòng chăm sóc khách hàng cần bảng tổng quan: mọi khách hàng đều phải xuất hiện, kèm tổng tiền từng đơn họ đã đặt. Khách chưa có đơn nào vẫn xuất hiện với giá trị 0. Khách có nhiều đơn xuất hiện nhiều dòng (mỗi đơn một dòng).
Hãy dùng LEFT JOIN kết hợp IFNULL.
Lược đồ bảng khachhang:
| Cột | Kiểu | Ý nghĩa |
|---|---|---|
| id | INT | Khóa chính |
| ten | VARCHAR(50) | Tên khách hàng |
Lược đồ bảng donhang:
| Cột | Kiểu | Ý nghĩa |
|---|---|---|
| id | INT | Khóa chính |
| khachhang_id | INT | Mã khách |
| tongtien | INT | Tổng tiền (nghìn đồng) |
Ví dụ: khách chưa mua gì in một dòng với tongtien = 0.
SETUP SQL tạo bảng khachhang(id INT, ten VARCHAR(50)), donhang(id INT, khachhang_id INT, tongtien INT) và chèn dữ liệu.
Mỗi bảng có số dòng ≤30; tongtien của đơn thật luôn >0.
Mỗi dòng: id khách, ten, tongtien (IFNULL về 0 nếu chưa có đơn). Sắp xếp theo id khách tăng dần, rồi theo id đơn tăng dần.
Ví dụ:
Đầu vào:
CREATE TABLE khachhang (id INT PRIMARY KEY, ten VARCHAR(50));
CREATE TABLE donhang (id INT PRIMARY KEY, khachhang_id INT, tongtien INT);
INSERT INTO khachhang VALUES (1,'An'),(2,'Bình'),(3,'Chi');
INSERT INTO donhang VALUES (10,1,500),(11,1,300),(12,3,200);
Đầu ra:
1 An 500
1 An 300
2 Bình 0
3 Chi 200
Giải thích:
Đang tải editor...