2011-11-21 33 views
1

基本上我需要顯示ALL info from T1 and T2 where T1.Catalogue = T2.CatalogueMySQL的:從第二表顯示從一個表而不管信息的所有數據

這些表是不相等的,這意味着T2不一定具有用於T1的各行的信息,但我需要兩個表,以反正顯示。

我該怎麼做?

這不會產生我想要什麼:

select master.*, digital_info.* from master 
INNER JOIN digital_info on master.Catalogue = digital_info.Catalogue; 

也不會LEFT JOIN產品:

select master.*, digital_info.* 
from master 
LEFT JOIN digital_info 
on master.Catalogue = digital_info.Catalogue; 

[[[對不起也許我的問題是相當混亂......我已經修改它]]]

+0

以避免所有此JOIN消息:select master。*,digital_info。* from master INNER JOIN digital_info on master.Catalogue = digital_info.Catalogue; - 這不會產生我想要的。 – Elen

+0

是否想要來自T1和T2的所有數據,無論匹配如何一個完整的外連接? – Andrew

+0

是的!外連接也許是? – Elen

回答

0
select * from master as m 
left outer join digital_info as d on m.Catalogue = d.Catalogue 
union 
select * from master as m 
right outer join digital_info as d on m.Catalogue = d.Catalogue; 

這是你在找什麼?

+0

這會產生錯誤 - 錯誤代碼:1051.未知的表'主',這沒有任何意義? – Elen

+0

@Elen什麼是2表名 – Shirish11

+0

master,digital_info – Elen

2
SELECT * FROM 
T1 LEFT JOIN T2 
ON T1.Catalogue = T2.Catalogue 

左連接:左表中的每個項目都將顯示在MySQL結果中,即使沒有墊子與正在加入的其他表格一起使用。

+0

不,謝謝,這不是我要求的 – Elen

+1

@Elen:在查詢中考慮單詞'LEFT JOIN'。我不知道你真的想要什麼,但根據你提出的問題,這裏的所有答案都是正確的。 –

2
SELECT * FROM T1 LEFT JOIN T2 ON T1.Catalogue = T2.Catalogue; 

的LEFT JOIN關鍵字返回左表(table_name1)的所有行,即使在右表(table_name2)不匹配。 (http://www.w3schools.com/sql/sql_join_left.asp)

+0

抱歉,這太簡單了 - 這將只選擇兩個表格之間的匹配元素,但我需要所有T1元素。但謝謝 – Elen

+0

正如我所說,這個代碼將顯示左表(T1)中的任何匹配,而不管你正在加入的表(T2)中的數據是什麼......你在你的問題中使用了一個INNER JOIN,它只會返回一個如果兩個表中都有匹配,則爲行。 'LEFT JOIN'的功能不同 –

+0

不是IF - 不管有沒有匹配 – Elen

2

這被稱爲左連接。例如:

SELECT * 
FROM T1 
LEFT JOIN T2 ON T1.Catalogue = T2.Catalogue 
+0

謝謝,這不是我所要求的 – Elen

相關問題