我有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
答案 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