2012-07-03 185 views
0

我有5個表在我的Mysql數據庫與t1與字段名稱像數據,ID,酷和4個其他表與ID和數據說t2,t3,t4,t5。mysql子查詢或加入

我已經使用連接和子查詢,但我得到的結果是空的設置它不是強制性的,在t2,t3,t4,t5表中的所有字段都已填充.t4,t5,t3,t2可以爲空如果數據列t1 = t2 = t3 = t4 = t5,如果在任何表中找到任何匹配的數據,那麼我使用數據的where子句它打印來自t1和id的cool以及來自找到的表的數據(如果有的話),並且如果找到數據匹配在所有的表中它打印所有的表統計等

cool data.t1 id.t1 
cool data.t2 id.t2 
and so on 



table t1 

cool data id 
0 xyz 1 

table t2 

data id 
xyz 5 

table t3 

data id 
xyz 4 

table t4 

data id 
xyz 3 

table t5 

data id 
xyz 2 

期望的輸出

cool data id 
    0 xyz 1 
    0 xyz 4 
    0 xyz 3 
    0 xyz 5 
    0 xyz 2 

如果任何表是空的說,T5和T4比輸出應該

cool data id 
    0 xyz 1 
    0 xyz 4 
    0 xyz 3 
+2

你提的問題是非常糟糕的措辭 - 你能不能請換句話說,也許包括一個數據樣本 – ManseUK

+0

此外,幾個全程停止肯定會有所幫助。 – troelskn

+0

感謝您的回覆 我編輯過這個問題 –

回答

0

我從問題中瞭解什麼是你需要從表t1對於所有其他表中的數據在所有匹配dataid列各自的表格。

實現一個簡單的方法是將每個表分別與t1連接,然後使用union all來合併所有結果。

SELECT t1.cool, t2.data, t2.id 
FROM t1 INNER JOIN t2 ON (t1.id=t2.id) AND (t1.data=t2.data) 
UNION ALL 
SELECT t1.cool, t3.data, t3.id 
FROM t1 INNER JOIN t3 ON (t1.id=t3.id) AND (t1.data=t3.data) 
UNION ALL 
SELECT t1.cool, t4.data, t4.id 
FROM t1 INNER JOIN t4 ON (t1.id=t4.id) AND (t1.data=t4.data) 
UNION ALL 
SELECT t1.cool, t5.data, t5.id 
FROM t1 INNER JOIN t5 ON (t1.id=t5.id) AND (t1.data=t5.data) 

從你的榜樣,這是很可能的,可能有重複記錄要篩選出來使用不同的這樣的 -

SELECT DISTINCT cool, data, id 
FROM 
(
-- above query here 
)