Найти возникновение статуса транспорта

У меня есть 2 таблицы «Transport_Status» и «Квитанции», где идентификационный номер является ключом и может встречаться в Transport_Status более одного раза.

Я хочу протоколировать передачу квитанций

Только если код 200 не отображается, отображать полученный набор (показывать только результаты с кодом ошибки 900).

У меня есть:

Select * from Transport_Protocoll 
inner join Receipts on Transport_Protocoll.id=Receipts.id
where not exists(select * where TRANSPORT_STATUS=200)

Но я все еще получаю результаты ошибки 900, даже если существует TRANSPORT_STATUS = 200.

Транспортные_протоколы:

ИДЕНТИФИКАТОР Транспортный_статус Транспорт_Деталь Дата 1111126 900 Сеть недоступна (не удалось подключиться) 10.07.2024 1111126 200 чек успешно отправлен 14.07.2024 1111127 900 Сеть недоступна (не удалось подключиться) 10.07.2024

Квитанции:

ИДЕНТИФИКАТОР Дата заказа статья Дата 1111126 1.07.2024 Мороженое 10.07.2024 1111127 1.01.2024 Йогурт 03.07.2024 1111128 1.05.2024 Человек-призрак 03.07.2024

Ожидаемый результат:

ИДЕНТИФИКАТОР Транспортный_статус Транспорт_Деталь Дата 1111127 900 Сеть недоступна (не удалось подключиться) 10.07.2024 1111128 нулевой нулевой) нулевой

Потому что квитанция с идентификатором 1111126 в какой-то момент не удалась, но впоследствии была успешно отправлена. И 1111127 не удалось ни в одной другой точке

Вы можете получить более точные ответы, если предоставите примеры и ожидаемые данные запроса.

siggemannen 15.07.2024 18:36
on id=id. Не могли бы вы сделать ссылку получше, например on tp.id = r.id? Конечно, вам нужно присвоить псевдоним вашим таблицам.
Eric 15.07.2024 18:39

У вас нет имени таблицы в вашем существовании.

Nathan_Sav 15.07.2024 18:40
Select * from Transport_Protocoll as tp join Receipts as r on tp.id=r.id where not exists (select 1 from Transport_Protocoll as tp2 where tp2.id=tp.id and tp2.Transport_Status=200)
Nathan_Sav 15.07.2024 18:59

Это сработало @Nathan_Sav, большое спасибо. Значит, оператор «выбрать 1» был ключевым?!

verklixt 15.07.2024 19:17

И наличие имени таблицы для проверки существования тоже существует

Nathan_Sav 15.07.2024 19:18

@Nathan_Sav, можно ли также получить идентификатор: 1111128, где нет записи в таблице транспортных протоколов? Обратите внимание на таблицу ожидаемых результатов

verklixt 16.07.2024 16:40

Да, что-то использую not exists (select 1 from Transport_Protocoll as tp2 where tp2.id=tp.id)

Nathan_Sav 16.07.2024 18:25
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
4
8
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вам нужен статус протокола передачи квитанций.
Итак, сначала возьмем таблицу Receipts и LEFT JOIN Transport_Protocols. И результат содержит строки из таблицы «Квитанции», где нет записи в таблице «Транспортный протокол».

См. пример

Select r.ID, t.Transport_Status,t.Transport_Detail,t.Date  
from Receipts r
left join Transport_Protocols t on t.id=r.id
where not exists
  (select 1 from Transport_Protocols t2 
   where t2.id=t.id and TRANSPORT_STATUS=200
  )

Выход

ИДЕНТИФИКАТОР Транспортный_статус Транспорт_Деталь Дата 1111127 900 Сеть недоступна (не удалось подключиться) 2024-07-10 1111128 нулевой нулевой нулевой

демо

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