2012-07-03 132 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 
)