2012-07-13 79 views
1

更新 感謝您對我原來的問題的所有答案。 我現在有與這些查詢相關的另一個問題。在我加入表格後,我想要搜索NULL結果,按照以下示例,我想搜索surname = NULL/surname ='',但它會返回空結果,即使有2個未鏈接的結果。MySQL/PHP加入表格並不總是有共同的列

實例查詢:

SELECT table1.*,table2.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.surname=NULL 

這回0

任何想法?我能理解後面爲什麼它會返回0的邏輯,但必須有辦法得到這個工作

原來的問題(?): 我找不到我的問題的任何答案,或許這是因爲我不知道我應該找什麼。

我的問題是,我想加入2個表一個共同的指標,而是包括在公共指標也存在犯規的記錄..

也許我做沒有任何意義,但我會試試下面

表1

id | name 
1 | John 
2 | Michael 
3 | Anna 
4 | Sue 

表2

id | surname 
1 | Doe 
2 | Anderson 
代碼解釋

所以想輸出/結合,像這樣的表的查詢:

table1.id | table1.name | table2.id | table2.surname 
1 | John | 1 | Doe 
2 | Michael | 2 | Anderson 
3 | Anna | NULL | NULL 
4 | Sue | NULL | NULL 

所以,合併在有數據,並且不合並,其中,這是沒有任何數據(或添加NULL值)。 table2的數據總是比table1少,所以table1可以用作骨骼。 vlookup在Excel中完美無缺,返回N/A,其中沒有找到值 我知道如何用PHP實現這一點,但我試圖加快我的代碼,當處理記錄遠高於50k我不想要單獨查詢另一個表列的每一行。

我試過WHERE table1.id = table2.id,但它只加入他們,如果table2.id存在,我也試過JOIN ON函數,但它也是這樣。

請幫忙

回答

2

也許使用LEFT JOIN。

SELECT * 
FROM table1 
LEFT JOIN table2 ON table1.id = table2.id 

請參閱this excellent Jeff Atwood's post

+0

想通了,而寫的問題,然後測試它: )雖然非常棒,當然,這是行得通:)乾杯! – user1177811 2012-07-13 13:48:52

0
SELECT * FROM table1 LEFT JOIN ON table2 WHERE table1.id = table2.id; 

你試過嗎?

0

大聲笑。 有時我發現,如果我以其他人能夠幫助我的方式編寫我的問題,我有點想辦法...... 我一直在尋找解決方案超過4小時,但同時寫它我開始思考我的早期課程關於左/右加入...

嗯......對不起,如果我接受了任何人的時間:)

,如果其他人會想知道正確的查詢是:

SELECT table1.*,table2.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id