繁体   English   中英

Sql 查询从多个表中获取多个数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM