inner join 按客户显示销售列表

inner join display list of sales by customer

我需要按客户显示销售列表,显示客户 ID、客户姓名、 客户购买的产品名称,销售日期,按客户id排序..

这里是客户table结构

CREATE TABLE customer 
(cust_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,forename CHAR(10) NOT NULL
,surname CHAR(10) NOT NULL
,phone CHAR(15) NULL
);

这是销售 table 结构

CREATE TABLE sales
(cust_id CHAR(6) NOT NULL
,prod_id CHAR(8) NOT NULL
,quantity SMALLINT NULL 
,date_of_sale NULL
,PRIMARY KEY(cust_id,prod_id)
);

谢谢。

产品table

这将为您提供客户列表,它使用 LEFT JOINS - 这意味着结果将向您显示没有销售的客户以及有销售的客户 - 这可能是您想知道的信息。

SELECT 
c.cust_id, 
c.forename, 
c.surname, 
p.prod_name, 
s.date_of_sale
FROM customers c 
LEFT JOIN sales s ON s.cust_id = c.cust_id
LEFT JOIN products p ON p.prod_id = s.prod_id 
ORDER BY c.cust_id ASC

如果您只想查看有销售额的客户 - 那么只需将 LEFT 更改为 INNER

SELECT 
c.cust_id, 
c.forename, 
c.surname, 
p.prod_name, 
s.date_of_sale
FROM customers c 
INNER JOIN sales s ON s.cust_id = c.cust_id
INNER JOIN products p ON p.prod_id = s.prod_id 
ORDER BY c.cust_id ASC