Как проверить, совпадают ли все записи в возвращаемом кортеже из вложенного запроса?

Привет, я новичок в sql, и я не могу найти хороший способ решить проблему. У меня есть следующие объекты

passengers (`id` INT, `name` VARCHAR(45), `surname` VARCHAR(45),
`year_of_birth` INT) 

flights (`id` INT, `routes_id` INT, `date` DATE, `airplanes_id` INT) 

flights_has_passengers (`flights_id` INT, `passengers_id` INT)

airplanes (`id` INT, `number` VARCHAR(45), `manufacturer`
VARCHAR(45), `model` VARCHAR(45)).

Я хочу создать скрипт, который находит имена всех пассажиров, которые сели хотя бы на один рейс, и если они сели более чем на один рейс, эти рейсы должны быть выполнены с использованием одного и того же самолета. Я попытался вернуть кортеж, содержащий самолеты, который использовал каждый из пассажиров, используя вложенный запрос. Затем я попытался использовать оператор all, чтобы проверить, является ли каждая запись в типе одинаковой. Однако мне не повезло. Любой совет будет оценен.

Обновлено: я подумал о следующем решении, но не знаю, правильно ли оно:

     select p1.name, p1.surname
    from passengers p1, airplanes a1, flights_has_passengers, flights
    where
        p1.id = flights_has_passengers.passengers_id and
        flights_has_passengers.flights_id = flights.id and
        flights.airplanes_id = a1.id
        group by p1.id
        having count(a1.id) = 1;
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ОБНОВЛЕНИЕ: основываясь на комментарии OP к ответу, вот еще один способ использования НЕ СУЩЕСТВУЕТ

Hey thanks for your answer.Is there another way to implement this without a join statement ?For example something like not exists or all ?

select p.id
from passengers p 
join flights_has_passengers  fp 
  on p.id= fp.passengers_id
join flights f
  on f.id=fp.flights_id
 where not exists 
 (select 1 from join flights f1 
 where f1.id=f.id
 and f1.airplanes_id<>f.airplanes_id)

Возможно, используйте JOIN, как показано ниже.

select p.id
from passengers p 
join flights_has_passengers  fp 
  on p.id= fp.passengers_id
join flights f
  on f.id=fp.flights_id
group by p.id
having count(f.airplanes_id)=1

Обратите внимание: если вас интересует только идентификатор пассажира, вам даже не нужно присоединяться к таблице пассажиров.

Chris Maurer 22.04.2022 21:55

@ChrisMaurer правильно, я добавил это на всякий случай.

DhruvJoshi 22.04.2022 21:57

@DhruvJoshi Эй, спасибо за ваш ответ. Есть ли другой способ реализовать это без оператора соединения? Например, что-то вроде не существует или все?

AlexandrosS 24.04.2022 18:33

Ответ @AlexandrosS обновлен

DhruvJoshi 25.04.2022 07:51

Другие вопросы по теме