2013-03-08 44 views
0

我是SQL数据库的新手,我正在玩一些表来通过使用JOIN来获得列。如何在sql中通过第三个表的帮助来合并两个表?

我有一个像下面

A - id, A1 
B - id, B1, B2, B3 
C - id, C1, C2, c3 


AB - id, A_id, B_id 

AC - id, A_id, C_id 

现在一个表,我希望做一些连接,我希望得到的结果一样,

B1, B2, B3, C1, C2, C3 

即使这样,我看到了一些同样类型的问题,我无法理解。所以,如果答案只是简单地解释一下会非常感谢。由于

+0

您正在使用哪些DBMS?甲骨文? Postgres的? – 2013-03-08 13:37:53

+0

Sql Anywhere Sybase 11 – Learner 2013-03-08 14:17:46

回答

2
SELECT B1, B2, B3, C1, C2, C3 
FROM A 
INNER JOIN AB ON A.id = AB.A_id 
INNER JOIN B ON B.id = AB.B_id 
INNER JOIN AC ON A.id=AC.A_id 
INNER JOIN C ON C.id = AC.C_ID 

编辑:

如果表中的列具有相同的名称(例如,有一个科拉姆B.column1和列C.column1)做:

SELECT B.column1, B.B1, B.B2, B.B3, C.column1, C.C1, C.C2, C.C3 
FROM A 
INNER JOIN AB ON A.id = AB.A_id 
INNER JOIN B ON B.id = AB.B_id 
INNER JOIN AC ON A.id=AC.A_id 
INNER JOIN C ON C.id = AC.C_ID 

编辑2: 对于长表名您可以做:

SELECT b.B1, b.B2, b.B3, c.C1, c.C2, c.C3 
FROM A_LONG_NAME a 
INNER JOIN AB ON a.id = AB.A_id 
INNER JOIN B_LONG_NAME b ON b.id = AB.B_id 
INNER JOIN AC ON a.id=AC.A_id 
INNER JOIN C_LONG_TABLE_NAME c ON c.id = AC.C_ID 
+0

嗨,谢谢,如果表名A,B,C确实有更长的名字。在这种情况下,是否可以使用一些变量,比如'some_longer_name_table AS A'? – Learner 2013-03-08 13:05:18

+0

是的,你可以这样做: SELECT * FROM A_LONG_TABLE_NAME a INNER JOIN ANOTHER_LONG_TABLE_NAME b ON a.Id = b.RefId – VARAK 2013-03-08 13:06:02

+0

这看起来不太好。我会添加另一个编辑 – VARAK 2013-03-08 13:07:24

相关问题