2017-05-31 6 views
1

2つの異なるテーブルからデータを選択するための1つのSQLコマンドがあります。GROUP_CONCATと空の値を持つSQLコマンド

最初の表は、「セクション」(ID、タイトル、テキスト)で、2番目の表は、「sections_multimedia」(ID、SECTION_ID、ファイル名)私はページのすべてのセクションを取得するためGROUP_CONCATを使用

し、それぞれのマルチメディアであります(写真)

私のコマンドは以下の通りです: "sections_multimedia" テーブルの "SECTION_ID" フィールドを介して接続されている "sections_multimedia"

SELECT s.*, GROUP_CONCAT(CONCAT_WS(':', sm.id, sm.filename) SEPARATOR ',') AS multimedia 
           FROM sections AS s, sections_multimedia AS sm 
           WHERE s.id = sm.section_id 
           GROUP BY sm.section_id 
           ORDER BY s.id ASC; 

表 "セクション" と表。

上記のSQLコマンドは完全に機能しますが、唯一の問題は次のとおりです。 "sections"テーブルの行にテーブル "sections_multimedia"の何もない場合、結果には表示されません。

"sections_multimedia"テーブルにデータがあるかどうかにかかわらず、テーブル "セクション"のすべてのデータを取得するにはどうすればよいですか?

ありがとうございました!

答えて

1

は、FROM句のカンマを使用します。 常には、適切で明示的なJOIN構文を使用します。あなたの場合は、LEFT JOINが必要です:

SELECT s.*, 
     GROUP_CONCAT(CONCAT_WS(':', sm.id, sm.filename) SEPARATOR ',') AS multimedia 
FROM sections s LEFT JOIN 
    sections_multimedia sm 
    ON s.id = sm.section_id 
GROUP BY s.id 
ORDER BY s.id ASC; 
+0

ありがとうございましたGordon!魅力のように働いていました!このコマンドは、セクションごとに約4枚の写真が約4.000枚入っていることを期待しています。 – Nick

関連する問題