2012-07-15 98 views
0

我有一个名为我的数据库中的用户表。用户可以有多个地址,但在某些情况下,他们不会有任何地址。我的mysql连接语句只返回它至少有一个地址记录:mysql链接语句没有链接没有返回记录

$query = ' SELECT DISTINCT a.id FROM users as a, addresses as b' ; 
$query.= ' WHERE a.id = b.userId ' ; 

我怎样才能改变这种使用户没有地址,仍然会被退回?

我猜这是一个简单的解决方案,我只是想念!

在此先感谢。

+2

很好,在查询中,您使用的是加入既要有行存在。你能不能仅仅从用户那里查询不同的a.id? – 2012-07-15 01:13:16

回答

2

使用LEFT JOIN代替:

SELECT DISTINCT a.id 
FROM Users a LEFT JOIN Addresses b 
     on a.ID = b.UserID 
+0

干杯,谢谢你的答案。假设用户有电话号码,同样的事情,他们可能有很多或没有。可以使用两个LEFT JOIN吗? – user1020317 2012-07-15 01:24:50

+0

是的。基本上'LEFT JOIN'返回基于左表记录的所有记录,不管它是否在右表上匹配。 – 2012-07-15 01:32:40

+0

酷..得到它的工作!干杯 – user1020317 2012-07-15 01:58:51

1

您需要使用LEFT JOIN

$query = ' SELECT DISTINCT a.id FROM users as a LEFT JOIN addresses as b' ; 
$query.= ' ON a.id = b.userId ' ;