2015-09-25 28 views
-1

我有三个具有相同列但行数不同的表(每次不同)。在mySQL中连接三个相同的表格

table A   table B  table C 
    (NaRows)  (NbRows)  (NcRows) 
    --------  ---------  ---------- 
ID name v1 v2 ID name v1 v2 ID name v1 v2 

我想创建一个所有记录表(NA,NB,NC的最大值),而不dublicates

 result of query 
------------------------------------------------------------- 
A.ID A.name A.v1  A.v2  B.v1 B.v2  C.v1 C.v2 

我尝试没有成功的一些连接。请帮帮我 !

+0

这些表格是如何相互关联的?你有什么疑问?与你想要的相比,那些回报是什么? –

+2

你应该更清楚你想要的结果。 –

+0

也有些代码会很好。你尝试了什么,它是如何失败的? –

回答

0

这个查询

SELECT 
    a.id, 
    a.name, 
    a.v1 AS a_v1, 
    ... 
    b.v1 AS b_v1, 
    ... 
    c.v1 AS c_v1, 
    ... 
FROM 
    table_a as a, 
    table_b as b, 
    table_c as c 
WHERE 
    a.id = b.id 
    AND b.id = c.id 

会给你这样的结果:

---------------------------------------------------------- 
a.id a.name a_v1 a_v2 b_v1 b_v2 c_v1 c_v2 

(你可以随意命名您的结果集)

断言:在每个表都存在每个ID(否则你可以使用连接或联合)。

+0

但是,如果表具有不同的行数,它不会工作,是不是?如果表a有Na行,表b Nb和表c Nc,并且例如Nb> Na> Nc,那么我希望结果表具有Nb行,其中Nath到Nbth具有a_v1 = 0和a_v2 = 0,因为没有' t存在于表a中,并且Ncth到Nbth行具有c_v1 = 0和c_v2 = 0,因为表c中不存在。 – dpap