投稿 (gems) と添付ファイル (gemdetail) と投稿への返信 (gem) を含むフォーラム サイトがあり、返信には添付ファイル (gemdetail) を含めることもできます。投稿と返信の両方が同じテーブルに保存されるため、関連する返信と詳細を持つすべての投稿を選択する興味深い左結合になります。
ユーザーが各投稿を評価できるようにする別のテーブルをミックス (評価) に追加したいと考えています。次に、同じクエリで各投稿の合計評価を取得できるようにしたいと考えています。sum(rating) を追加して、出力の各行に gemid の合計が含まれるようにする方法。hereにあるものと同様の合計サブクエリ(アドホック結果セットを含む派生テーブル)が必要であることはわかっていますが、それは私のスキルセットを超えています。前もって感謝します。
テーブル構造は以下の通り
table: gems
gemid title replygemid
----- ----- ----------
220 map NULL
223 inhabitants NULL
403 reply to map 220
table: gemdetail
gemid filename
------ --------
220 uganda-map.jpg
220 mozambique-map.jpg
223 uganda-inhabitants.jpg
223 kenya-inhabitants.jpg
403 mona-lisa-x8.jpg
table: rating (to be added)
gemid rating
----- -------
220 1
220 5
223 3
403 -1
私の現在の(簡略化された)クエリ
SELECT g.gemid as ggemid, g.title as gtitle, gemdetail.filename as gfilename, r.filename as rfilename
FROM (SELECT gems.* FROM gems ) g
LEFT JOIN
(SELECT title, x.gemid, x.replygemid, x.userid, y.filename from gems x
LEFT JOIN gemdetail y ON x.gemid = y.gemid ) r ON g.gemid = r.replygemid
LEFT JOIN gemdetail ON g.gemid = gemdetail.gemid
結果は次のようになります
ggemid replygemid gtitle gfilename rfilename
------ ---------- ------ --------------------- ----------------
220 403 Map uganda-map.jpg mona-lisa-x8.jpg
220 403 Map mozambique-map.jpg mona-lisa-x8.jpg
223 NULL Inhabitants uganda-inhabitants.jpg NULL
223 NULL Inhabitants kenya-inhabitants.jpg NULL
223 NULL Inhabitants kenya-inhabitants.jpg NULL