我相信我知道我的问题出在哪里,但我不确定如何解决它。 我试图找到出发地点与到达地点不同的旅行。但是我编写代码的方式使得它只返回具有相同出发和到达位置的集合。我该如何解决这个问题?我想找到一个从波士顿出发并到达拿骚的旅行,同时避免使用像旅行这样的代码。 DepartureLocCode = "BOS"
SELECT name
FROM staff, trip, locations
WHERE trip.TripNum = staff.TripNum AND staff.DATE = trip.DATE AND trip.DATE = '2015-08-14'
AND (trip.ArrivalLocCode = locations.LocationCode AND locations.Location = "Nassau")
AND (trip.DepartureLocCode = locations.LocationCode And locations.Location = "Boston");
最佳答案
首先:永远不要在FROM
子句中使用逗号。 始终使用正确、明确的JOIN
语法。如果您正在学习 SQL,则尤其如此。
不过,您的主要问题是您需要两个连接:
SELECT name
FROM staff s JOIN
trip t
ON t.TripNum = s.TripNum JOIN
locations la
ON t.ArrivalLocCode = la.LocationCode JOIN
locations ld
ON t.DepartureLocCode = ld.LocationCode
WHERE t.DATE = '2015-08-14' AND
la.Location = 'Nassau' AND
ld.Location = 'Boston';
关于mysql代码返回一个空集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42104426/