MySQL:选择`project_id`等于具有特定`user_id`的任何`project`的行

时间:2012-12-14 14:09:05

标签: php mysql sql select

这不是太难,但我不知道我在寻找什么术语。我相信你们可以帮助我。 :)

我有一个表tasks,其行包含列project_id。每个project_id引用id表中的一行(projects)。每个project都属于某个user,这就是为什么它有user_id列。

我现在想要从此表中选择tasks等于某个project_id的任何project的所有user

或者更简单地说:

每个TASK属于属于USER的PROJECT。

我想创建一个SELECT语句来接收属于特定USER的所有TASKS。每个TASK和USER之间的唯一链接是通过PROJECT。

我如何做到这一点?

非常感谢你的帮助! :)

4 个答案:

答案 0 :(得分:3)

JOIN表:

SELECT
  t.*
FROM tasks t
INNER JOIN projects p ON t.project_id = p.project_id
INNER JOIN users    u ON p.user_id    = u.user_id
WHERE u.user_id = @AcertianUserId

答案 1 :(得分:2)

SELECT
  tasks.*
FROM
  users
INNER JOIN
  projects ON users.id = projects.user_id
INNER JOIN
  tasks ON projects.id = tasks.project_id
WHERE
  users.id = 1

答案 2 :(得分:0)

尝试:

SELECT t.*
  FROM user u, projet p, task t
 WHERE u.id = p.user_id
   AND p.id = t.project_id
   AND u.id = your_id

或(同样的结果):

SELECT t.*
      FROM user u
     INNER JOIN projet p ON u.id = p.user_id
     INNER JOIN task t ON p.id = t.project_id
     WHERE u.id = your_id

答案 3 :(得分:0)

SQL Fiddle

select t.*
from tasks t
join projects p on p.id = t.project_id
join users u on u.id = p.user_id
where u.id = 17