Показать строки из таблицы, которые не содержит другая таблица - PullRequest
0 голосов
/ 20 сентября 2019

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

Я хочу показать всех людей, которые не заполнили свою доступность.Вот что я делаю, чтобы увидеть, кто заполнил их доступность в SQL:

SELECT availability_id, availability_date, availability_start, availability_end, info_id, info_firstname, info_surname, job_name
FROM Availability
FULL JOIN Info
ON Availability.availability_info_id = Info.info_id
LEFT JOIN Job
ON Job.job_id = Info.info_job_id
WHERE Availability.availability_date = '2019-9-20'; //today

Итак, это показывает людей, которые доступны сегодня.

Теперь я хочу показать людям, которые имеютне заполнили их доступность.Поэтому я хочу показать всех в таблице ' Информация ', которых нет в таблице ' Доступность ', где дата = 2019-09-20 .

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 20 сентября 2019
--use derived table  and case statment:

--you can give your date in case statement and give proper aliases in order to avoid errors during execution

--this query will give you all records from info table and you can also get info for availability and not available also


SELECT *
FROM (
SELECT Availability.availability_id, Availability.availability_date, Availability.availability_start, Availability.availability_end, Info.info_id, Info.info_firstname, Info.info_surname, Job.job_name
        ,case when  Availability.availability_date = '2019-09-20' then 'AVAILABLE'
              ELSE 'NOT AVAILABLE'
              END STATUS
FROM        Info
left join   Availability
ON          Availability.availability_info_id = Info.info_id
LEFT JOIN   Job
ON          Job.job_id = Info.info_job_id
WHERE Availability.availability_date = '2019-09-20'; --//today
) T
WHERE STATUS='NOT AVAILABLE' --THIS WILL GIVE YOU INFO WHICH HAS NO '2019-09-20' IN availability_date COLUMN
1 голос
/ 20 сентября 2019

Я думаю, что следующее должно сделать это.В нем перечислены все из информации, где нет записи в доступности на определенную дату.

SELECT  I.* 
FROM    Info I
WHERE NOT EXISTS (
    SELECT 1
    FROM    Availability A
    WHERE   A.availability_info_id = I.info_id
        AND A.availability_date = '2019-9-20' -- today
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...