Mysql 查询中的棘手条件

Mysql 查询中的棘手条件,mysql,Mysql,我正在从事一个大学项目,我对这些查询非常感兴趣。我们的数据库如下所示: passengers(id,year_of_birth,name,surname) flights_has_passengers(flights_id,passengers_id) flights(id,routes_id,date) routes(id,airlines_id) airlines(id,name,alias,country,code,active) 我们被要求查找只与名为“英国航空公司”的航空公司一起旅行

我正在从事一个大学项目,我对这些查询非常感兴趣。我们的数据库如下所示:

passengers(id,year_of_birth,name,surname)
flights_has_passengers(flights_id,passengers_id)
flights(id,routes_id,date)
routes(id,airlines_id)
airlines(id,name,alias,country,code,active)
我们被要求查找只与名为“英国航空公司”的航空公司一起旅行的乘客。到目前为止,我的代码是:

SELECT passengers.name,passengers.surname 
FROM passengers
INNER JOIN flights_has_passengers on flights_has_passengers.passengers_id=passengers.id
INNER JOIN flights on flights_has_passengers.flights_id=flights.id
INNER JOIN routes on routes.id=flights.routes_id
INNER JOINairlines on routes.airlines_id=airlines.id
WHERE airlines.name='British Airways'
HAVING 
count(airlines.name)
ORDER BY passengers.name,passengers.surname
该代码可以查找乘坐英国航空公司航班的乘客,但也可以查找其他公司航班的乘客。因此,我的问题是如何找到仅乘坐英国航空公司航班的乘客


PS:很抱歉我的英语不好。

试着在
HAVING
条款中声明除英国航空公司外没有其他航空公司出现:

SELECT
    p.name,
    p.surname 
FROM passengers p
INNER JOIN flights_has_passengers fhp
    ON fhp.passengers_id = p.id
INNER JOIN flights f
    ON fhp.flights_id = f.id
INNER JOIN routes r
    ON r.id = f.routes_id
INNER JOIN airlines a
    ON r.airlines_id = a.id
GROUP BY
    p.name,
    p.surname 
HAVING
    COUNT(CASE WHEN a.name <> 'British Airways' THEN 1 END) = 0
ORDER BY
    p.name,
    p.surname;
选择
p、 名字,
p、 姓
来自乘客p
内联航班有乘客fhp
在fhp上,乘客识别号=乘客识别号
内联航班
在fhp航班上_id=f.id
内连接路由
在r.id=f.id上
内联航空公司
在r.airlines_id=a.id上
分组
p、 名字,
p、 姓
有
计数(当a.name“British Airways”然后为1 END时的大小写)=0
订购人
p、 名字,
p、 姓氏;

请注意,我在查询中引入了表别名,使其更易于阅读。

是的,对代码的形式感到抱歉。感谢您的帮助!