如何获得这个具体案例的记录?

时间:2012-04-06 15:46:15

标签: php mysql database join

我有三张桌子

Person (id, name, email)
Address (id, Person_id, address, verified)
Person_Claimed (id, Person_id, name, email)

我们手动在Person和Address表中添加记录。当有人在线查看他/她的个人资料时,他/她声明了他/她的个人资料,并在Person_Claimed Table中创建了一个条目。

现在我想获取未声明其个人资料的人的记录,并且他们的地址未经过验证。

如何加入这些表?

1 个答案:

答案 0 :(得分:2)

假设verified不为空,0表示'未经验证'

SELECT p.*
FROM Person p
INNER JOIN Address a ON (a.Person_id = p.id )
LEFT JOIN Person_Claimed pc ON (pc.Person_id = p.id)
WHERE a.verified =0 AND pc.id IS NULL

如果某人可以拥有多个未经验证的地址,您可能需要添加GROUP BY p.id(或SELECT DISTINCT而不是SELECT