क्योंकि stop_id
एक ही पंक्ति में दो अलग-अलग मान नहीं हो सकते हैं।
आप जो चाहते हैं उसे करने का एक तरीका एकत्रीकरण है:
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;
यह उन बसों को लौटाता है जो दोनों शहरों के नाम से रुकती हैं।
यह देखते हुए कि बसों के बहुत सारे स्टॉप हो सकते हैं, ऐसा करना अधिक कुशल हो सकता है:
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;