Php 选择具有特定记录数据的一组行
我今天在这里提出一个问题,这个问题让我感到相当困惑和困惑。也许有人能给我点帮助 我有三张桌子,如下所示。请注意,对于这个问题,它们被简化了 //表2检查//Php 选择具有特定记录数据的一组行,php,mysql,sql,Php,Mysql,Sql,我今天在这里提出一个问题,这个问题让我感到相当困惑和困惑。也许有人能给我点帮助 我有三张桌子,如下所示。请注意,对于这个问题,它们被简化了 //表2检查// check_id |task_id| status 1 | 1 | Done 2 | 1 | Done 3 | 1 | Done 4 | 2 | Done 5 | 2 | Not Done 6 | 2 | No
check_id |task_id| status
1 | 1 | Done
2 | 1 | Done
3 | 1 | Done
4 | 2 | Done
5 | 2 | Not Done
6 | 2 | Not Done
7 | 2 | Not Done
8 | 2 | Done
9 | 3 | Done
10 | 3 | Done
11 | 3 | Not Done
12 | 3 | Done
//表2用户//
user_id | email | type
1 | a@a.com | IN
2 | b@b.com | IN
3 | c@c.com | EX
user_id | email | type
1 | a@a.com | IN
//表_chk_usr//
check_id |user_id
1 | 1
2 | 1
3 | 1
4 | 2
5 | 2
6 | 2
7 | 2
8 | 2
9 | 3
10 | 3
11 | 3
12 | 3
以下是三个表及其在表_chk_usr表中的关系
我的问题是如何从表table\u user
中查询和选择类型为'IN'
的table\u user
行,其中table\u检查中分配的任务ID
的所有用户都具有状态
=完成
因此,预期结果应如下所示
//表2用户//
user_id | email | type
1 | a@a.com | IN
2 | b@b.com | IN
3 | c@c.com | EX
user_id | email | type
1 | a@a.com | IN
由于具有1的用户id已完成所有状态为“已完成”的任务id
我希望这对你们这些正在阅读的人来说是有意义的。任何帮助都将不胜感激
请注意,如果有任何帮助的话,我正在使用PHP作为服务器端语言。您可以在这里使用连接,但可能有更好的方法
SELECT * FROM table_checks
INNER JOIN table_chk_usr
ON table_checks.check_id = table_chk_usr.check_id
INNER JOIN table_user
ON table_chk_usr.user_id = table_user.user_id
WHERE table_checks.status = 'Done'
AND table_user.type = 'IN'
我想这就是你要找的
select user.user_id, user.email, user.type,
sum(if(status = 'done',1, 0)) as done, count(*) as checks
from checks
join chk_user on checks.check_id = chk_user.check_id
join user on chk_user.user_id = user.user_id
group by chk_user.user_id
having done = checks
(1)第二个联接缺少表名。(2) 您没有检查为用户分配的所有任务是否都处于“完成”状态。您还忘记了“type='IN'”,但这并不意味着会让您感到困惑。我只是指出你忘了OP要求只返回输入“IN”的用户……哇,我说不出话来了。如果你需要肾脏或肝脏移植,请给我发一条信息。