0

我在 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 = 徒步旅行的日期,但无论如何都没有连接任何山峰。

有谁知道这个问题的解决方案?

4

1 回答 1

0

我认为两个连接都应该是左连接。否则,第二个内部连接将不包括没有 hp_links 的峰。

于 2013-01-07T01:10:08.093 回答