2012-07-15 118 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 ' ;