1. ホーム
  2. mysql

[解決済み] MySQL 1つのクエリで複数のジョインが可能?

2022-03-05 02:40:32

質問

次のようなクエリがあります。

SELECT
  dashboard_data.headline,
  dashboard_data.message,
  dashboard_messages.image_id 
FROM dashboard_data
INNER JOIN dashboard_messages
  ON dashboard_message_id = dashboard_messages.id

ということで、私が使っているのは INNER JOIN を取得し image_id . そこで今度は、そのimage_idを images.filename をimagesテーブルから取得します。

どのようにクエリに追加すればよいのでしょうか?

どのように解決するのですか?

このように、単純に別のジョインを追加すればいいのです。

SELECT dashboard_data.headline, dashboard_data.message, dashboard_messages.image_id, images.filename
FROM dashboard_data 
    INNER JOIN dashboard_messages 
        ON dashboard_message_id = dashboard_messages.id
    INNER JOIN images
        ON dashboard_messages.image_id = images.image_id 

ただし、これは INNER JOIN 画像なしのメッセージがある場合、行全体がスキップされます。そのような可能性がある場合は、行末に LEFT OUTER JOIN これは、ダッシュボードのすべてのメッセージと、存在する場合のみ image_filename を返します (存在しない場合は null が返されます)。

SELECT dashboard_data.headline, dashboard_data.message, dashboard_messages.image_id, images.filename
FROM dashboard_data 
    INNER JOIN dashboard_messages 
        ON dashboard_message_id = dashboard_messages.id
    LEFT OUTER JOIN images
        ON dashboard_messages.image_id = images.image_id