Sql Выбрать несуществующую запись? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь изменить следующие 3 запроса в один запрос с окончательным выводом.

Первый запрос возвращает список идентификаторов и мест

Select id,place from Global where status='Y';

Пример запроса Вывод: -

1) 123, Дели

2) 345, Джамму

3) 456, Харьяна

Затем я хочу отправить этот вывод

Таблицы лицензий и DrvingLicence для фильтрации, если идентификатор, представленный в любой из этих таблиц, исключает идентификатор из окончательного вывода.

licenceId = id и drivingLicenceNo = id

Select licenceId from Licence table where state='MO' and licenceid=:id
Select drivingLicenceNo from DrvingLicence table where DOB='12/12/1978' and drivingLicenceNo=:id

Место присутствует только в таблице "Global" , которая должна присутствовать в окончательном выводе.

Окончательный результат:

1) 123, Дели

Предполагается, что id = 345 присутствует в таблице лицензий и id = 456 присутствует в таблице DrvingLicence

Ответы [ 4 ]

1 голос
/ 15 апреля 2020

Можете ли вы попробовать это, это сработало правильно для меня. Окончательный результат 123, Дели

select * from global g
where not exists (select 1 from Licence l where l.licenceId=g.id and l.state='MO')
and not exists (select 1 from DrvingLicence dl where dl.drivingLicenceNo=g.id and dob=to_date('12121978','ddmmyyyy'))
0 голосов
/ 20 апреля 2020

Попробуйте вместо этого!

SELECT * FROM GLOBAL g
WHERE g.id NOT IN (Select licenceId from Licence table where state='MO',Select drivingLicenceNo from DrvingLicence table where DOB='12/12/1978')

Надеюсь, что это работает ..

0 голосов
/ 15 апреля 2020

Может быть, использовать несколько JOINS

Select g.id,g.place 
  from Global g 
      INNER JOIN Licence li ON g.id != li.id 
      INNER JOIN DrvingLicence dl ON g.id != dl.id 
 WHERE g.status='Y' 
   AND li.state='MO' 
   AND dl.DOB='12/12/1978';
0 голосов
/ 15 апреля 2020

попробуйте

select 
    id,
    place 
from Global g
where status='Y'
and NOT EXISTS (
    select
        licenceId
    from Licence l
    on g.id = l.licenceId
)
OR NOT EXISTS (
    select
        drivingLicenceNo
    from DrvingLicence dl
    on g.id = dl.drivingLicenceNo
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...