我有两个表,一个是表Profile
,另一个是表Profile_location
(存储配置文件和位置的关系)。问题:
用户可以拥有多个配置文件,每个配置文件都有不同的位置。我想找到给定用户的每个配置文件之间的交叉位置。换句话说,评估给定用户的所有配置文件并找到不唯一的位置。
非常感谢快速帮助。
用户ID和位置ID来自表用户和位置。
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.
答案 0 :(得分: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
)