Question

J'ai deux tables. L'un d'eux (table user_profile) a un champ nommé « user_profile_id » et l'autre (tableau user_friend) a deux champs nommés « user_profile1_id » et « user_profile2_id » qui sont FK à la première table.

Je veux vérifier s'il y a des utilisateurs user_profile qui ne sont pas dans le tableau de user_friend, ni dans user_profile1_id, ni user_profile2_id.

Quelle requête dois-je utiliser?

EDIT:

CREATE TABLE user_profile (
  --fields
)

CREATE TABLE user_friend (
  user_profile1_id INT,
  user_profile2_id INT
)
Était-ce utile?

La solution

Utiliser un LEFT JOIN et vérifier les valeurs nulles. Quelque chose comme:

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

Voici un lien vers les différentes jointures

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top