У меня есть 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 в какой-то момент не удалась, но впоследствии была успешно отправлена. И 1111127 не удалось ни в одной другой точке
on id=id
. Не могли бы вы сделать ссылку получше, например on tp.id = r.id
? Конечно, вам нужно присвоить псевдоним вашим таблицам.
У вас нет имени таблицы в вашем существовании.
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, большое спасибо. Значит, оператор «выбрать 1» был ключевым?!
И наличие имени таблицы для проверки существования тоже существует
@Nathan_Sav, можно ли также получить идентификатор: 1111128, где нет записи в таблице транспортных протоколов? Обратите внимание на таблицу ожидаемых результатов
Да, что-то использую not exists (select 1 from Transport_Protocoll as tp2 where tp2.id=tp.id)
Вам нужен статус протокола передачи квитанций.
Итак, сначала возьмем таблицу 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
)
Выход
Вы можете получить более точные ответы, если предоставите примеры и ожидаемые данные запроса.