0

このクエリに問題があります。テーブルからSELECT1 つのプロジェクトを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_id結果は列, project_password, project_title, project_description, project_active, file_file,file_titlefile_category(最初の 2 つのフィールドは返されるすべての行で同じデータで、残りはファイルごとに異なる)のセットになると予想していました。

のプロジェクト情報とファイルを取得するだけでなく、テーブルtest_project3内のすべてのプロジェクトを返すようです。projects

何かアドバイス?

ありがとう!

4

2 に答える 2

0

inner joinの代わりに を使用してleft joinください:

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

は、テーブル内に一致があるかどうかに関係なく、テーブル内のleft joinすべての行を保持します。をフィルターとして使用する必要があります。これは、が行うことです。projectsfilesjoininner join

于 2013-08-12T23:25:36.903 に答える