Запрос между двумя связанными таблицами

dba.stackexchange https://dba.stackexchange.com/questions/1427

  •  16-10-2019
  •  | 
  •  

Вопрос

У меня есть два стола. Один из них (таблица user_profile) имеет поле с именем «user_profile_id», а другая (таблица user_friend) имеет два поля с именем «user_profile1_id» и «user_profile2_id», которые являются FK для первой таблицы.

Я хочу проверить, есть ли какие -либо пользователи в user_profile, которые не находятся в таблице user_friend, ни в User_profile1_id, ни user_profile2_id.

Какой запрос мне использовать?

РЕДАКТИРОВАТЬ:

CREATE TABLE user_profile (
  --fields
)

CREATE TABLE user_friend (
  user_profile1_id INT,
  user_profile2_id INT
)
Это было полезно?

Решение

Использовать LEFT JOIN и проверьте на наличие нулевых значений. Что-то типа:

SELECT profile.* FROM user_profile profile
 LEFT JOIN user_friend friend1 ON friend1.user_profile1_id = user_profile_id
 LEFT JOIN user_friend friend2 ON friend2.user_profile2_id = user_profile_id
 WHERE friend1.user_profile1_id IS NULL AND friend2.user_profile2_id IS NULL

Вот ссылка на различные объединения

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top