Mysql 返回count sale_id=4的项目的SQL查询

Mysql 返回count sale_id=4的项目的SQL查询,mysql,Mysql,我有三张桌子: user: user_id | user_name Sale: sale_id(pk) | user_id(fk) | sale_amount item: item_id(pk) | sale_id(fk) 每次用户从item表中购买时都会生成sale_id 我希望生成一个输出,该输出将写入我的用户id、销售id和计数(项目id),即用户在单独交易中购买的项目总数,其中项目表中的计数(销售id)为4 我尝试使用此功能,但不起作用: select s.user_id

我有三张桌子:

user: user_id     | user_name 
Sale: sale_id(pk) | user_id(fk) | sale_amount 
item: item_id(pk) | sale_id(fk) 
每次用户从item表中购买时都会生成sale_id

我希望生成一个输出,该输出将写入我的用户id、销售id和计数(项目id),即用户在单独交易中购买的项目总数,其中项目表中的计数(销售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
;
如果一个用户将id 1作为两个不同的事务,在第一个事务(sale_id=3)中他购买了2个项目,在第二个事务(sale_id=13)中他购买了4个项目,这意味着在项目表中,每四个购买的项目将具有相同的sale_id。因此,我想查看用户在一个事务中购买了4个项目的输出

输出:

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

您有关于
s.user\u id,s.id
的聚合,但是您是按
s.user\u id,i.sale\u id
进行分组的。这通常会导致错误,因为您的查询格式不正确


此外,如果您将
i.sale\u id
放入group by,并尝试使用have with
count(i.sale\u id)=4
,则不会返回结果。因为当您使用sale\u id进行分组时,
count(i.sale\u id)
将始终为0或1

您所说的“它不工作”是什么意思?查询生成错误,并且不返回任何输出。我不知道我犯了什么错误。我真的不理解那些人,他们在运行代码时问了一个关于错误的问题,但没有分享确切的错误消息。好吧,它不起作用……但是如果它起作用,你可能不会问。所以,请告诉我们一些更有用的东西:它的作用是什么?给我们一些具体的细节,而不是含糊的陈述。我们不能总是猜到您的错误消息…不管怎样,我们为什么需要这样做?这就像当你已经知道发动机过热时,让机械师猜测你的汽车出了什么问题。此外,当提问者提供一些样本数据和预期结果的示例(基于该数据)时,这些问题更容易回答。谢谢,但mysql会告诉您它在sql语句的哪一部分附近发现了错误。这一部分很重要。