提问者:小点点

如何从多个表中找出SQL中不匹配特定条件的结果?


我有三张桌子:

Person表以ID作为主键存储基本的Person明细此人可以拥有关系(父亲/母亲等),这些关系保存在Relationship表中,但是他们的用户是在Person表中创建的(例如Person表中的ID=2,3),这样我们就知道2,3与用户1(carry)相关。我们还有第三个表-地址,它存储用户ID方面的地址。(用户和他的相关人员,他们也是用户)我想知道在SQL中是否存在一个用户或他的相关用户的地址。如何实现这一点?


共1个答案

匿名用户

您可以组合两个规则并在组合表中进行搜索,如下所示

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链接来锻炼