Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL:选择“project\u id”等于任何具有特定“user\u id”的“project”的行`_Php_Mysql_Sql_Select - Fatal编程技术网

Php MySQL:选择“project\u id”等于任何具有特定“user\u id”的“project”的行`

Php MySQL:选择“project\u id”等于任何具有特定“user\u id”的“project”的行`,php,mysql,sql,select,Php,Mysql,Sql,Select,这不会太难,但我不知道我要找的术语是什么。我相信你们能帮我的忙。:) 我有一个表tasks,其中的行有一个列project\u id。每个project\u id引用projects表中一行的id。每个项目都属于某个用户,这就是为什么它有一列用户id 现在我想从该表中选择所有任务,其中项目id等于某个用户的任何项目 或者更简单地说: 每个任务都属于属于用户的项目 我想创建一个SELECT语句来接收属于特定用户的所有任务。每个任务和用户之间的唯一链接是通过项目 我如何做到这一点 非常感谢您的帮助!

这不会太难,但我不知道我要找的术语是什么。我相信你们能帮我的忙。:)

我有一个表
tasks
,其中的行有一个列
project\u id
。每个
project\u id
引用
projects
表中一行的
id
。每个
项目
都属于某个
用户
,这就是为什么它有一列
用户id

现在我想从该表中选择所有
任务
,其中
项目id
等于某个
用户的任何
项目

或者更简单地说: 每个任务都属于属于用户的项目

我想创建一个SELECT语句来接收属于特定用户的所有任务。每个任务和用户之间的唯一链接是通过项目

我如何做到这一点

非常感谢您的帮助!:)

试试看:

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 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

加入
表格:

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



那些
中的
条件应该是
连接的一部分(为了清晰/可读性)。结果与
内部连接相同,而且性能似乎也一样。此外,如果您曾经转换为
左连接
,它会变得更容易——在
WHERE
中设置条件将有效地使其成为
内部连接
(除非您随后添加另一个
WHERE
条件以允许
NULL
),在我的第一次查询中,您只需在
u.id=p.user\id
限制(
u.id=p.user\id(+)
)的末尾添加一个
(+)
,即可将
内部连接更改为
左连接。非常感谢您的快速响应!)那些
中的
条件应该是
连接的一部分(为了清晰/可读性)。结果与
内部连接相同,而且性能似乎也一样。此外,如果您曾经转换为
左连接
,它会变得更容易——在
WHERE
中设置条件将有效地使其成为
内部连接
(除非您随后添加另一个
WHERE
条件以允许
NULL
),在我的第一次查询中,您只需在
u.id=p.user\id
限制(
u.id=p.user\id(+)
)的末尾添加一个
(+)
,即可将
内部连接更改为
左连接。非常感谢您的快速响应!)谢谢,这工作做得很好。如果我可以再问一个问题:我必须以这种方式获取行,这是否是糟糕的数据库设计的症状?我是否应该重构我的数据库结构,以便每个任务都直接拥有一个用户id?@Macks-当然,随时都可以。不是不是,这是你建议的更好的数据库设计的同义词。太棒了,这让我感觉非常专业。:)编辑:每个项目只属于一个用户。@Macks=注意:这取决于:每个任务是否有一个单独的用户对其负责,或者只是负责整个项目的用户?在这种情况下,如果每个用户负责一个特定的任务,那么每个任务都有一个用户可能会更好。是的,每个项目只属于一个用户。一个用户可以有多个项目,但每个项目只有一个用户。谢谢,这非常有效。如果我可以再问一个问题:我必须以这种方式获取行,这是否是糟糕的数据库设计的症状?我是否应该重构我的数据库结构,以便每个任务都直接拥有一个用户id?@Macks-当然,随时都可以。不是不是,这是你建议的更好的数据库设计的同义词。太棒了,这让我感觉非常专业。:)编辑:每个项目只属于一个用户。@Macks=注意:这取决于:每个任务是否有一个单独的用户对其负责,或者只是负责整个项目的用户?在这种情况下,如果每个用户负责一个特定的任务,那么每个任务都有一个用户可能会更好。是的,每个项目只属于一个用户。一个用户可以有多个项目,但每个项目只有一个用户。谢谢Olaf,我现在明白了!)谢谢奥拉夫,我现在明白了!:)
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
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