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