Mysql SQL查询不正确
我在做一些过去的问题论文,发现了以下几点: 公司使用以下数据库:Mysql SQL查询不正确,mysql,sql,database,Mysql,Sql,Database,我在做一些过去的问题论文,发现了以下几点: 公司使用以下数据库: customers - CustNo, CustName, CustAddress Reservations - CustNo, TourID Tours - TourID, Destination, Date, Time, Price 从这些表中,我必须创建一个SQL语句,用于查找在任何伦敦旅行和任何爱丁堡旅行中预订的乘客的客户编号 尝试是这样的: SELECT R.custNo FROM Reserva
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语句。因此,如果有人能帮我解决这个问题,那就太好了。您可以尝试以下方法:
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'
目的地的客户,并仅检索具有这两个目的地的客户
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您使用的是哪些RDBMS–MySQL、sql server等等在ANSI-92 SQL标准(20多年前)中,旧式的逗号分隔的表列表样式被正确的ANSI
JOIN
语法所取代,它的使用是不受欢迎的。当您弄清楚如何进行联接时,您可以两次联接tours表:一次用于爱丁堡,一次用于伦敦。但下面给出的“给男人一条鱼”答案是更为传统的回答