Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [MySQL] Tổng quan mua sắm của khách hàng

    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.

    • Định dạng đầu vào:

      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.

    • Ràng buộc đầu vào:

      Mỗi bảng có số dòng ≤30\le 30≤30; tongtien của đơn thật luôn >0> 0>0.

    • Định dạng đầu ra:

      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:

    An có 2 đơn nên in 2 dòng; Bình chưa có đơn vẫn xuất hiện với tongtien 0; Chi có 1 đơn.

    Đang tải editor...