SQL查询返回计数为sale_id = 4的项目

时间:2019-03-10 20:54:11

标签: mysql

我有3张桌子:

user: user_id     | user_name 
Sale: sale_id(pk) | user_id(fk) | sale_amount 
item: item_id(pk) | sale_id(fk) 

每当用户从商品表购买商品时,都会生成sale_id。

我希望生成一个输出,该输出将向我写入user_id,sale_id和count(item_id),即用户在单独交易中购买的总商品,其中商品表中的count(sale_id)= 4。

我尝试使用此方法,但是它不起作用:

select s.user_id,s.id, count(i.item_id) 
from sale s join item i 
on s.id = i.sale_id 
group by s.use_id, i.sale_id
having count(i.sale_id) = 4
;

如果user_id 1作为2个不同的交易,则在第一笔交易(sale_id = 3)中他购买了2件商品,而在第二笔交易(sale_id = 13)中,他购买了4件商品,这意味着在商品表中每购买的四件商品将具有相同的商品sale_id。因此,我想查看用户在一笔交易中购买了4件商品的输出。

输出:

s.user_id | i.sale_id | count(i.item_id) 
1           13          4

1 个答案:

答案 0 :(得分:-1)

您对s.user_id,s.id进行了汇总,但是您正在按s.user_id, i.sale_id进行分组。这通常会导致错误,因为您的查询格式不正确。

此外,如果您将i.sale_id分组,并尝试与count(i.sale_id) = 4一起使用,则此方法永远不会返回结果。因为当您与sale_id分组时,count(i.sale_id)始终为0或1