我有一张自行车旅行表(bixi_august
)和一张自行车停靠站(bixi_stations
)。 bixi_august
仅具有站号,并且名称存储在bixi_stations.name
中。
我正在尝试编写一个查询,该查询显示最常见的行程,但显示的是更易读的车站名称,而不是代码。
输入以下内容,我得到SQL error or missing database (ambiguous column name: bixi_stations.name)
:
SELECT bixi_stations.name as 'Start Station', bixi_stations.name as 'End
Station', COUNT(*)
FROM bixi_august
INNER JOIN bixi_stations ON bixi_august.start_station_code=bixi_stations.code
INNER JOIN bixi_stations ON bixi_august.end_station_code=bixi_stations.code
GROUP BY bixi_august.start_station_code, bixi_august.end_station_code
ORDER BY COUNT(*) DESC;
我基本上是想得到这个,但是表中没有显示站号。
SELECT bixi_stations.name as 'Start Station name', start_station_code, bixi_stations.name as 'End Station', end_station_code, COUNT(*) as 'Total Trips'
FROM bixi_august
INNER JOIN bixi_stations ON bixi_august.start_station_code=bixi_stations.code
GROUP BY start_station_code, end_station_code
ORDER BY COUNT(*) DESC;
我对SQL还是很陌生,但Google搜索/搜索并没有帮助我。我感到自己的问题是在我的select语句中两次遇到bixi_stations.name
,而没有模糊内部联接的工作方式。
答案 0 :(得分:1)
您需要使用表别名来区分表引用:
SELECT ss.name as Start_Station, se.name as End_Station, COUNT(*)
FROM bixi_august a INNER JOIN
bixi_stations ss
ON a.start_station_code = ss.code INNER JOIN
bixi_stations se
ON a.end_station_code = be.code
GROUP BY ss.name, se.name
ORDER BY COUNT(*) DESC;
请注意我对查询所做的更改:
GROUP BY
列与SELECT
列相同。