我在 mysql 数据库中有两个表,其中包含远足和峰值:
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,但这似乎没有任何区别。然后,我将第二个 INNER JOIN(“远足”)更改为 RIGHT JOIN。这有所不同,因为我得到了一个额外的记录,其中包含 peaks.PeakID = NULL、peaks.Name = NULL 和 FirstClimbed = 徒步旅行的日期,但无论如何都没有连接任何山峰。
有谁知道这个问题的解决方案?