LEFT JOIN と INNER JOIN を組み合わせて既存のクエリに追加する際に問題が発生します。
2 つのメイン テーブルがあります。私の写真の検索可能なすべてのデータを含む「photoSearch」と、私の写真のすべてのデータを含む「写真」。「photoSearch」の 3 つのフィールドで FULLTEXT を使用して関連する写真 ID を取得し、著作権、サイズ、寸法などの「写真」テーブルからデータを取得しています...
これは私のクエリです:
SELECT p.photoID, p.setID, p.headline, p.caption, p.height, p.width, p.size, p.copyright
FROM photos AS p,
(SELECT photoID FROM photoSearch WHERE MATCH (allPeople, allKeywords, shortCaption)
AGAINST ('+byline' IN BOOLEAN MODE) LIMIT 0,50) AS photoIDs
WHERE p.photoID = photoIDs.photoID;
次に、このクエリを変更して、各写真に表示されている人物の名前を取得し、画面に印刷するための LEFT JOIN と INNER JOIN を含める必要があります。一部の写真には人物が写っていないため、LEFT JOIN が必要です。このデータは 2 つのテーブルにまたがっています (正規化されています)。「photoPeople」と「people」なので、この結合を思いつきました:
My Join (上記のクエリに追加する必要があります)
LEFT JOIN ( photoPeople AS pp INNER JOIN people AS pe ON pp.peopleID = pe.PeopleID)
ON p.photoID = pp.photoID
しかし、サブ選択クエリがコンマ区切りの FROM リストにあるため、元のクエリに合わせるのが難しいと感じています。混乱しています。また、参加すべきではない場所に参加することで、FULLTEXT インデックスのパフォーマンスに影響を与えないようにしたいと考えています。
副選択の直後 (WHERE の前) に追加しようとしましたが、列 p.photoID を認識しないという SQL エラーが発生していました。
元のクエリと DB 設計は私のものではありません。
どんな助けや指導もありがたく受け取られます。