Php 如何从同一个表中选择不同的和值

Php 如何从同一个表中选择不同的和值,php,mysql,Php,Mysql,我有两张桌子: 用户 userid name surname active userid activity type 活动 userid name surname active userid activity type 有三种类型的活动 我想根据用户类型选择所有用户的活动总数。结果集应显示如下所示: userid name surname at1 at2 at3 at1表示活动类型1的总活动计数(与at2和at3相同) 我试图使用该查询,但返回null SELECT u.userid,

我有两张桌子:

用户

userid name surname active
userid activity type
活动

userid name surname active
userid activity type
有三种类型的活动

我想根据用户类型选择所有用户的活动总数。结果集应显示如下所示:

userid name surname at1 at2 at3
at1表示活动类型1的总活动计数(与at2和at3相同)

我试图使用该查询,但返回null

SELECT u.userid, u.name, u.surname, 
       SUM( a1.activity ) AS at1,
       SUM( a2.activity ) AS at2, 
       SUM( a3.activity ) AS at3
FROM users AS u
INNER JOIN activities AS a1 ON a1.userid = u.userid
INNER JOIN activities AS a2 ON a2.userid = u.userid
INNER JOIN activities AS a3 ON a3.userid = u.userid
WHERE u.active=1
      AND a1.type =1
      AND a2.type =2
      AND a3.type =3

您可以使用条件和作为

select
u.userid, 
u.name, 
u.surname, 
sum(a.type = 1) as at1,
sum(a.type = 2) as at2,
sum(a.type = 3) as at3
FROM users AS u
INNER JOIN activities AS a ON a.userid = u.userid
group by u.userid

您可以使用条件和作为

select
u.userid, 
u.name, 
u.surname, 
sum(a.type = 1) as at1,
sum(a.type = 2) as at2,
sum(a.type = 3) as at3
FROM users AS u
INNER JOIN activities AS a ON a.userid = u.userid
group by u.userid

您可以使用条件和作为

select
u.userid, 
u.name, 
u.surname, 
sum(a.type = 1) as at1,
sum(a.type = 2) as at2,
sum(a.type = 3) as at3
FROM users AS u
INNER JOIN activities AS a ON a.userid = u.userid
group by u.userid

您可以使用条件和作为

select
u.userid, 
u.name, 
u.surname, 
sum(a.type = 1) as at1,
sum(a.type = 2) as at2,
sum(a.type = 3) as at3
FROM users AS u
INNER JOIN activities AS a ON a.userid = u.userid
group by u.userid

您可以这样做(这是伪代码):


您可以这样做(这是伪代码):


您可以这样做(这是伪代码):


您可以这样做(这是伪代码):


此查询对结果为错误值的活动类型编号求和。此查询对结果为错误值的活动类型编号求和。此查询对结果为错误值的活动类型编号求和。此查询对结果为错误值的活动类型编号求和。经过几次修改后,它现在可以正常工作了。“活动”列包含文本,因此不可能获取和值。它应该是COUNT(a1.activity)而不是SUM(a1.activity),其他的也应该是。经过几次修改后,我的意思是它现在可以工作了。“活动”列包含文本,因此不可能获取和值。它应该是COUNT(a1.activity)而不是SUM(a1.activity),其他的也应该是。经过几次修改后,我的意思是它现在可以工作了。“活动”列包含文本,因此不可能获取和值。它应该是COUNT(a1.activity)而不是SUM(a1.activity),其他的也应该是。经过几次修改后,我的意思是它现在可以工作了。“活动”列包含文本,因此不可能获取和值。它应该是计数(a1.活动)而不是总和(a1.活动),其他的也应该是计数(a1.活动)。