Bởi vì stop_id
không được là hai giá trị khác nhau trong cùng một hàng.
Tổng hợp là một cách để thực hiện những gì bạn muốn:
SELECT b.bus_name
FROM buses b JOIN
route_connect rc
ON rc.busid = b.id JOIN
stops s
ON s.id = rc.stop_id
GROUP BY b.bus_name
HAVING SUM( s.stop_name = 'Sydney' ) > 0 AND
SUM( s.stop_name = 'Melbourne' ) > 0;
Thao tác này trả về các xe buýt có điểm dừng với tên của cả hai thành phố.
Do xe buýt có thể có nhiều điểm dừng, nên làm như sau:
SELECT b.bus_name
FROM buses b JOIN
route_connect rc
ON rc.busid = b.id JOIN
stops s
ON s.id = rc.stop_id
WHERE s.stop_name in ('Sydney', 'Melbourne')
GROUP BY b.bus_name
HAVING COUNT(DISTINCT s.stop_name) = 2;