从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) 因为我们不知道您的表是什么样子,所以我们无法真正告诉您要编写什么查询。表格数据样本和您的预期结果也会使我们更快地帮助您。