Как вернуть строки из одной таблицы на основе идентификатора НЕ в другой таблице в SQL (sqlite)?

Здравствуйте и СПАСИБО ВСЕМ!!! (SQLITE)

У меня есть 3 таблицы: Trips, Layovers, Flights. Один Путешествие имеет много Авиабилеты и много Остановки. Все Остановки и Авиабилеты связаны с Путешествие через PID.

Мне нужно вернуть выбранные поездки (Trips.PIsSelected=1) И ИСКЛЮЧИТЬ ВСЕ поездки, ГДЕ ПРИСУТСТВУЕТ FlightNumber.

    SELECT t.* FROM Trips AS t 
    LEFT JOIN Flights AS f ON t.PID = f.PID WHERE 
    (f.FlightNumber <> 1892 AND t.PIsSelected = 1) GROUP BY f.PID

Приведенный выше оператор просто возвращает все поездки с t.PIsSelected = 1... Я могу сделать обратное, и приведенный ниже оператор работает (но это не то, что я хочу (ниже)).

SELECT t.* FROM Trips AS t 
LEFT JOIN Flights AS f ON t.PID = f.PID WHERE 
(f.FlightNumber = 1892 AND t.PIsSelected = 1) GROUP BY f.PID

Заявление выше работает и возвращает результаты, где The Trip Has PIsSelected=1 и FlightNumber 1892... Мне нужно вернуть все результаты, где FlightNumber НЕ ЯВЛЯЕТСЯ 1892. Спасибо.

Я загрузил на Диск 2 текстовых файла (Trips.txt и Flights.txt). Данные столбца разделены двумя пробелами в соответствии с рекомендациями StackOverflow.

https://drive.google.com/drive/folders/13qJJgxCR11qQ122mW6AJ5c-60VA-O4Vt?usp=sharing

Поездки Как вернуть строки из одной таблицы на основе идентификатора НЕ в другой таблице в SQL (sqlite)?

Авиабилеты Как вернуть строки из одной таблицы на основе идентификатора НЕ в другой таблице в SQL (sqlite)?

Остановки Как вернуть строки из одной таблицы на основе идентификатора НЕ в другой таблице в SQL (sqlite)?

Я думаю, что ни один из ваших кодов не работает из-за дополнительной скобки?

VBoka 18.03.2022 15:51

Спасибо ВБока. Это просто опечатка на этом форуме. Я исправил опечатку.

Chuck 18.03.2022 16:19

Как таблица Layovers связана с вашим требованием. Вы не используете его ни в одном из своих запросов. Публикуйте образцы данных и ожидаемые результаты в табличном формате, а не в изображениях.

forpas 18.03.2022 17:20

Так что извините за форпас. Я нуб :( Понятно - изображения плохие ... Я не уверен, что знаю правильный формат, но я посмотрю на добавление данных «табличного формата». Таблица Layover связана, так как я буду внутренне присоединяться к этой таблице один раз Я понимаю, почему мой « <> » не возвращает правильные данные. Пытаюсь сделать «Проблему» простой. Я боялся, что слишком сложная проблема может привести к комментариям, связанным с чем-то, что меня не волнует. Я удалю указанное изображение. . Спасибо Спасибо.

Chuck 18.03.2022 17:54
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
4
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Трудно понять это без некоторых примеров данных, но если ваш второй запрос работает, может быть, использовать его? Например

SELECT * from Trips where PID NOT IN (
    SELECT t.PID FROM Trips AS t 
    LEFT JOIN Flights AS f ON t.PID = f.PID WHERE 
    (f.FlightNumber = 1892 AND t.PIsSelected = 1) GROUP BY f.PID
)tmp and t.PIsSelected = 1

Спасибо Эммануэль! Я пытаюсь это сделать (это не работает, но этот формат внутреннего оператора выбора может быть ключом к ответу. И я смотрю, как добавить данные в форум StackedOverflow - я не знал, что могу это сделать

Chuck 18.03.2022 18:05

Я загрузил некоторые данные на свой Диск. См. Ссылку в исходном сообщении. Спасибо!

Chuck 19.03.2022 01:51

У меня возникли проблемы с выполнением вашего запроса, потому что он имеет «группу по», но выбирается из t.*. Может быть, это вызывает вашу проблему? Попробуйте удалить группу. Если вам нужны уникальные поездки, попробуйте SELECT DISTINCT t.* FROM...

Emmanuel Herrera 19.03.2022 16:12

Спасибо Эммануэль !!!- попробую SELECT DINTINCT. Трудно обдумать этот вопрос, но кажется таким простым. Если есть FlightNumber, соответствующий оператору <>, мне нужно удалить всю строку Trip из возвращаемого результата (Trips.PID).

Chuck 19.03.2022 19:56
Ответ принят как подходящий

Легендарный РБ нашел ответ. Спасибо Рик!!!

    SELECT t.* FROM Trips AS t 
    WHERE t.PIsSelected = 1 AND NOT EXISTS 
    (SELECT 1 FROM Flights f WHERE f.PID = t.PID AND f.FlightNumber = 1892)

Также спасибо, Эммануэль Х., за ваши наводящие вопросы ... Высоко ценим...

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