我正在做一些过去的问题论文并遇到以下问题: 公司使用以下数据库:
customers - CustNo, CustName, CustAddress
Reservations - CustNo, TourID
Tours - TourID, Destination, Date, Time, Price
从这些表中我必须创建一个SQL语句,用于查找在任何伦敦之旅和任何爱丁堡之旅中预订的乘客的客户数量......
尝试是这样的:
SELECT
R.custNo
FROM
Reservations R, Tours T
WHERE
T.tourID = R.tourID
AND T.destination = 'London'
AND T.destination = 'Edinburgh';
我被告知这是不正确的,并找到一个替代的,正确的SQL语句。所以,如果有人能帮助我解决这个问题,那就太棒了。
答案 0 :(得分:2)
您可以尝试以下操作:
select R.custNo
from Reservations R
join Tours T on T.tourID = R.tourID
where T.destination in ('London', 'Edinburgh')
group by R.custNo
having count(distinct T.destination) = 2
这将查找具有'London'
或'Edinburgh'
目的地的客户,并仅检索具有这两个目的地的客户。
答案 1 :(得分:0)
SELECT R1.custNo
FROM Reservations R1 inner join Tours T1 on T1.tourID = R1.tourID
WHERE T1.destination = 'London'
INTERSECT
SELECT R2.custNo
FROM Reservations R2 inner join Tours T2 on T2.tourID = R2.tourID
WHERE T2.destination = 'Edinburgh'
ps:这只适用于sql server DBMS