[英]Sql query to fetch multiple data from multiple tables
给定下表:
• 客户(ClientId、姓名、姓氏、年龄)
• 产品(ProductId、名称、价格)
• 购买(Purchaseld、日期、ClientId、Productid)
我需要编写一个显示客户购买数量的 SQL 查询。 它只能显示购买超过 1 次的客户。 结果应包含以下字段:全名(即“john rambo”)、购买数量。
我已经写了这个查询,但结果不正确
SELECT Concat(clients.name, clients.surname)
FROM clients
JOIN products
ON clients.name = products.name
JOIN purchases
ON products.productid = purchases.productid
GROUP BY clientid
HAVING Count(clientid) > 1
SELECT Concat(clients.name, ' ', clients.surname),
count(*) as number_of_orders
FROM clients
JOIN purchases
ON products.productid = purchases.productid
GROUP BY Concat(clients.name, ' ', clients.surname)
HAVING Count(clientid) > 1
如评论中所述,您加入产品没有多大意义 - 您要求仅返回与客户名字匹配的产品的记录。
CONCAT 将两个字段粘合在一起(例如“JohnRambo”)
它只能显示购买超过 1 次的客户。
您的问题没有提及产品,因此查询中不需要:
SELECT CONCAT(c.name, c.surname)
FROM clients c JOIN
purchases p
ON p.ClientId = c.ClientId
GROUP BY c.ClientId, CONCAT(c.name, c.surname)
HAVING COUNT(*) > 1 ;
请注意, ClientId
可能唯一地定义了客户端——而不是名称。 所以ClientId
应该是聚合的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.