2014-02-12 77 views
2

比方說,我有兩個表格:usersuser_location_data。我需要獲取users內的所有記錄,並將其與user_location_data中的匹配數據(如果存在)相關聯 - 但如果不存在,仍會獲取用戶數據。示例輸出:如果存在聯繫人

User ID | Name  | Location Data 
--------|----------|-------------------------- 
     2 | John  | 
     3 | Jane  | Lorem Ipsum 
     6 | Harry | 
     9 | Lloyd | Lorem Ipsum 
    22 | Patricia | Lorem Ipsum 

這可以很容易地用一個簡單的循環和多個查詢來完成,但對我來說這似乎有點兒窒息。常規關係查詢(例如SELECT * FROM users u, user_location_data uld WHERE u.user_id = uld.user_id)只會獲取具有匹配位置數據記錄的用戶。有什麼辦法可以用單個查詢來做到這一點嗎?

+0

好消息!從現在開始我一定會繼續。 – CodeMoose

回答

4

使用LEFT JOIN

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

SELECT * FROM users u LEFT JOIN user_location_data uld ON u.user_id = uld.user_id 
+1

希望我能+2這個 - 一次爲正確的答案,一次爲真棒文章。這回答了我有過的很多問題。謝謝! – CodeMoose

+0

@CodeMoose那篇文章也幫助我百萬回來。 Jeff Atwood是Stack Overflow的最初創建者。你應該回去閱讀他的很多博客:) http://www.codinghorror.com/blog/2008/04/introducing-stackoverflow-com.html – degenerate

相關問題