Проверка на валидность записи

Подскажите пожалуйста как мне проверить на валидность запись. Есть таблица name в ней имена актеров, person_info хранит факты о актерах. Между собой связаны по name.id = person_info.person_id. Как проверить, что в таблице фактов об актерах нет ссылок на несуществующих актеров. Я думаю что там через full join, но даже приблизительно не знаю как это сделать. Поэтому код не прикладываю


Ответы (2 шт):

Автор решения: Akina

Как проверить, что в таблице фактов об актерах нет ссылок на несуществующих актеров.

SELECT *
FROM person_info 
WHERE NOT EXISTS ( SELECT NULL
                   FROM name
                   WHERE name.id = person_info.person_id )

вернёт все такие записи.

Если вернётся пустой набор - таких записей нет.

→ Ссылка
Автор решения: Andrew Holovko

Как проверить, что в таблице фактов об актерах нет ссылок на несуществующих актеров.

Предлагаю использовать LEFT JOIN. Следующий запрос выберет все записи и выведет список тех, у которых отсутствует name.id.

SELECT 
* 
FROM 
person_info AS pi 
LEFT JOIN name AS n ON pi.person_id = n.id 
WHERE n.id IS NULL
→ Ссылка