gpt4 book ai didi

mysql - 查询中的棘手条件

转载 作者:行者123 更新时间:2023-11-29 02:09:41 26 4
gpt4 key购买 nike

我正在做一个大学项目,我对这些查询非常困惑。我们的数据库如下所示:

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;

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

关于mysql - 查询中的棘手条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55993350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com