我的MySQL SELECT查询正在返回表中的所有行

我的MySQL SELECT查询正在返回表中的所有行,mysql,select,left-join,Mysql,Select,Left Join,我在这个问题上遇到了麻烦。我想从projects表中选择一个项目,并从projects表中选择与其关联的所有文件。我的问题是: SELECT `projects`.`id` AS `project_id`, `projects`.`password` AS `project_password`, `projects`.`title` AS `project_title`, `projects`.`description` AS `project_descripti

我在这个问题上遇到了麻烦。我想从
projects
表中选择一个项目,并从
projects
表中选择与其关联的所有文件。我的问题是:

SELECT
    `projects`.`id` AS `project_id`,
    `projects`.`password` AS `project_password`,
    `projects`.`title` AS `project_title`,
    `projects`.`description` AS `project_description`,
    `projects`.`active` AS `project_active`,
    `files`.`file` AS `file_file`,
    `files`.`title` AS `file_title`,
    `files`.`category` AS `file_category`
FROM `projects`
LEFT JOIN `files` ON
    `projects`.`id` = "test_project3" AND
    `files`.`project_id` = "test_project3"
;
我希望结果是一组列,
project\u id
project\u password
project\u title
project\u description
project\u active
file\u file
file\u title
,以及
file\u category
(对于返回的每一行,前两个字段都是相同的数据,其余的每个文件都不同)

这显然是返回
projects
表中的每个项目,而不是仅仅检索
test\u project3
的项目信息和文件

有什么建议吗


谢谢!

只需使用
内部联接
而不是
左联接

SELECT
    `projects`.`id` AS `project_id`,
    `projects`.`password` AS `project_password`,
    `projects`.`title` AS `project_title`,
    `projects`.`description` AS `project_description`,
    `projects`.`active` AS `project_active`,
    `files`.`file` AS `file_file`,
    `files`.`title` AS `file_title`,
    `files`.`category` AS `file_category`
FROM `projects`
INNER JOIN `files` ON
    `projects`.`id` = "test_project3" AND
    `files`.`project_id` = "test_project3"
;

左联接
保留
项目
表中的所有行,而不管
文件
表中是否有匹配项。您希望使用
联接
作为筛选器,这是
内部联接
所做的。

解决此问题的一种方法是将
项目
表上的谓词移动到t他使用
WHERE
子句,并引用join列,而不是ON子句中的常量

大概是这样的:

  FROM `projects`
  LEFT
  JOIN `files`
    ON files.project_id = projects.id
 WHERE projects.id = 'test_project3'

(这是标准模式,如果从项目中返回多行,则需要使用该模式。)

我宁愿使用项目中的
左键连接projects.id=files.project\u id WHERE projects.id=“test\u project3”
很高兴知道,我不知道该语法是否有效,但谢谢。是的,我想返回正确的项目,不管它是否有任何相关文件。我想我试图将
WHERE
子句放在
LEFT JOIN
之前,我只是假设,因为这是一个语法错误,我不能使用
WHEREJOIN
语句中的code>子句。谢谢。