Query tra due tabelle correlate
Domanda
Ho due tabelle. Uno di loro (tabella profilo_utente) ha un campo denominato "user_profile_id" e l'altro (tabella user_friend) ha due campi denominati "user_profile1_id" e "user_profile2_id" che sono FK alla prima tabella.
voglio controllare se ci sono utenti in profilo_utente che non sono nella tabella user_friend, né in user_profile1_id né user_profile2_id.
Quali query dovrebbe utilizzare?
Modifica
CREATE TABLE user_profile (
--fields
)
CREATE TABLE user_friend (
user_profile1_id INT,
user_profile2_id INT
)
Soluzione
Usa un LEFT JOIN
e controllo per i valori nulli. Qualcosa di simile:
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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange