我有一个表items
,它是 map 上的点。他们在表item_stations
(item_id
,station_id
)中列出了最近的地铁站。这些车站的名称放置在表stations
中(id
、station_name
、station_direction
,...)。
所以我需要在 SQL 查询项目数据中返回最近车站的名称。
SELECT
i.id, i.title, i.description,
GROUP_CONCAT(s.station_id) as stations_ids,
FROM items i
LEFT JOIN item_stations s ON s.item_id = s.id
WHERE id = ?
GROUP BY i.id
LIMIT 1
我必须如何编写INNER JOIN
WITH表stations
ONstations.id = s.station_id
?
最佳答案
也许你想要这样的东西?
SELECT
i.id, i.title, i.description,
GROUP_CONCAT(s.station_id) as stations_ids,
GROUP_CONCAT(stations.station_name) as stations_names
FROM
items i
LEFT JOIN
item_stations s ON s.item_id = s.id
INNER JOIN stations on
stations.id = s.station_id
WHERE i.id = ?
GROUP BY i.id, i.title, i.description
LIMIT 1
我将 i.id 放在 WHERE block 中,因为 id 字段位于 2 个表中 - item_stations 和 items。 MB 这是一个问题吗?
关于MySQL:如何使用 LEFT JOIN 结果进行 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591027/