2010-10-17 2 views
2

J'ai deux tables l'une est la table Profile et l'autre est la table Profile_location (stocke la relation d'un profil et un emplacement). Problème:MySQL trouver des chevauchements dans une table pour différents profils pour un même utilisateur

Un utilisateur peut avoir plusieurs profils, chaque profil ayant des emplacements différents. Je veux trouver le croisement des emplacements entre chaque profil d'un utilisateur donné. En d'autres termes, évaluez tous les profils d'un utilisateur donné et trouvez les emplacements qui ne sont pas uniques.

Une aide rapide serait vraiment appréciée.

L'ID utilisateur et l'ID de lieu proviennent des utilisateurs et de l'emplacement de la table.

 
Table Profile:   Profile_ID, Profile_Name, User_ID, Other details ... 
Table Profile_Location: ProLoc_ID, Location_ID(FK), Profile_ID(FK) 
Table Users:   User_ID, Username, etc. 
Table Location:   Location_ID, Location_Name, etc. 

Répondre

0
SELECT 
    l.Location_ID, 
    l.Location_Name 
FROM 
    Location l 
WHERE 
    EXISTS (
     SELECT 1 
     FROM Profile p 
    INNER JOIN Profile_Location pl ON pl.Profile_ID = p.Profile_ID 
      AND pl.Location_ID = l.Location_ID 
     WHERE p.User_ID = <USER_ID_PARAM> 
    GROUP BY pl.ProLoc_ID 
     HAVING COUNT(*) > 1 
) 
+0

colonne inconnue l depuis l emplacement n'existe pas dans ce contexte de sous-requête. Je l'utilise en tant que requête mysql. Vous ne savez pas si c'est OK pour SQL Server –

+0

Il * devrait * exister. MySQL peut faire des sous-requêtes corrélées et il est défini sur la requête externe, après tout. – Tomalak

+0

Désolé de vous déranger à nouveau Tom. Voici ce que j'ai: [SQL] sélectionnez \t tbl_region.id, \t tbl_region.'name' de tbl_region où \t EXISTE ( \t \t sélectionner 1 \t \t \t de tbl_profile \t INNER JOIN tbl_profile_location SUR tbl_profile_location.profile_id = tbl_profile.id \t \t \t \t \t \t ET tbl_profile_l ocation.region_id = tbl_region.id \t \t \t \t où tbl_profile.user_id = 109 \t \t GROUP BY tbl_profile_location.id \t \t \t ayant COUNT (*)> 1 ) [Err] 1054 - colonne Unknown « tbl_region .id 'dans' sur la clause ' –

Questions connexes