我有三张桌子:
Person表以ID作为主键存储基本的Person明细此人可以拥有关系(父亲/母亲等),这些关系保存在Relationship表中,但是他们的用户是在Person表中创建的(例如Person表中的ID=2,3),这样我们就知道2,3与用户1(carry)相关。我们还有第三个表-地址,它存储用户ID方面的地址。(用户和他的相关人员,他们也是用户)我想知道在SQL中是否存在一个用户或他的相关用户的地址。如何实现这一点?
您可以组合两个规则并在组合表中进行搜索,如下所示
SELECT * FROM
(
SELECT username,id,Address.Address
FROM Person
INNER JOIN Address ON Person.id = Address.Userid
UNION ALL
SELECT username,id,Address.Address
FROM Person
INNER JOIN Relationship ON Relationship.Relatedid = Person.id
INNER JOIN Address ON Relationship.Userid = Address.Userid
) as RES
WHERE Address = 'xyz road'
您还可以找到DBFiddle链接来锻炼