从mySql中具有不同条件的表中计算元素?
我想统计一个用户所有的订单和一个用户所有的完整订单。我带着这个来的,但它不起作用从mySql中具有不同条件的表中计算元素?,mysql,Mysql,我想统计一个用户所有的订单和一个用户所有的完整订单。我带着这个来的,但它不起作用 select count(a.id) as total, count(b.id) as complete from user join orders a on user.id = a.user_id join orders b on user.id = b.user_id where a.id = 1 and (b.id = 1 and b.complete
select
count(a.id) as total,
count(b.id) as complete
from
user
join
orders a on user.id = a.user_id
join
orders b on user.id = b.user_id
where
a.id = 1
and
(b.id = 1 and b.complete = 'yes');
有什么想法吗?您可以将订单和是相加,并按用户计算不同的id组
select user.id, sum(if(a.complete ='yes',1,0)), count(distinct a.id)
from user
INNER join orders a on user.id = a.user_id
group by user.id
您可以用yes对订单求和,并按用户对不同的id组进行计数
select user.id, sum(if(a.complete ='yes',1,0)), count(distinct a.id)
from user
INNER join orders a on user.id = a.user_id
group by user.id
我相信您正在按不同的用户搜索grouping(),然后计算与每个用户相关的所有订单加上已完成的订单。对于这种方法,您需要: (1)加入用户的订单 (2)在
user.id
列中使用groupby
子句
(3)使用Count()
(4)使用Sum对与具有特定条件的每个用户相关的所有订单进行求和(当1或0结束时的情况)
总之,类似于下一个查询的查询应该可以工作:
SELECT
u.id,
COUNT(o.id) AS total_orders,
SUM(CASE WHEN o.complete = "yes" THEN 1 ELSE 0 END) AS complete_orders
FROM
user AS u
INNER JOIN
orders AS o ON o.user_id = u.id
GROUP BY
u.id
我相信您正在按不同的用户搜索grouping(),然后计算与每个用户相关的所有订单加上已完成的订单。对于这种方法,您需要: (1)加入用户的订单 (2)在
user.id
列中使用groupby
子句
(3)使用Count()
(4)使用Sum对与具有特定条件的每个用户相关的所有订单进行求和(当1或0结束时的情况)
总之,类似于下一个查询的查询应该可以工作:
SELECT
u.id,
COUNT(o.id) AS total_orders,
SUM(CASE WHEN o.complete = "yes" THEN 1 ELSE 0 END) AS complete_orders
FROM
user AS u
INNER JOIN
orders AS o ON o.user_id = u.id
GROUP BY
u.id
您能包括表的模式和一些数据样本吗?请注意,当您执行
操作时,其中a.id=1
将限制为表订单的唯一行。1“不工作”不是错误消息或问题陈述。它没有给我们任何有用的信息。准确地告诉我们问题是什么-例如错误或意外结果或其他。2) 因为我们不知道您的表是什么样子,所以我们无法真正告诉您要编写什么查询。一个表数据样本和您期望的结果也会让我们更快地帮助您。您能包括表的架构和一些数据样本吗?请注意,当您执行操作时,其中a.id=1
将限制为表订单的唯一行。1“不工作”不是错误消息或问题陈述。它没有给我们任何有用的信息。准确地告诉我们问题是什么-例如错误或意外结果或其他。2) 因为我们不知道您的表是什么样子,所以我们无法真正告诉您要编写什么查询。表格数据样本和您的预期结果也会使我们更快地帮助您。