ハイキングとピークの mysql データベースに 2 つのテーブルがあります。
hikes: HikeID, Date, Name, Route, ...
peaks: PeakID, Name, Altitude, ...
どちらも「hp_links」というテーブルによって多対多の関係でリンクされています。私が取得したいのは、すべてのピークのリストであり、各ピークに対して、最も早く登った日付です。
私は次のことを思いつきました:
SELECT peaks.PeakID, peaks.Name, MIN(hikes.Date) AS FirstClimbed
FROM peaks
INNER JOIN hp_links ON peaks.PeakID = hp_links.PeakID
INNER JOIN hikes ON hp_links.HikeID = hikes.HikeID
GROUP BY peaks.PeakID
これは機能しますが、リンク テーブルにエントリがない (つまり、登っていない) ピークは含まれません。最初の INNER JOIN ('hp_links' へ) を LEFT JOIN に変更しましたが、違いはないようです。次に、2 番目の INNER JOIN (「ハイキング」) を RIGHT JOIN に変更しました。これは、peaks.PeakID = NULL、peaks.Name = NULL、FirstClimbed = ピークがリンクされていないハイキングの日付で構成される追加のレコードを取得したという点で違いがありました。
誰もこれに対する解決策を知っていますか?