2010-11-01 47 views
0

我有3个表 表A,表B和一个关系表C中SQL查询来从4个表

表A已经TA_ID作为主键与其它列沿 表B已经tb_id沿着与主键读其他列 表C具有ta_id,tb_id作为外键以及其他列。

我想找到表B中的所有行,在表C中有一个共同的ta_id。 我的sql查询是这样的。 SELECT B.ta_id, B.type, B.language, B.user_id FROM乙 INNER JOINÇ ON B.tb_id = C.tb_id 其中C.ta_id = 1 ORDER BY B.user_id

上述查询似乎是工作..

但现在我有D.tb_id另一个表称为表d作为外键(这是在表B中的主键)。 表B中的每行有表d相关的0或多行,或者我们可以说 1行或多行表d只能有一个相应的行表B.

现在我要列出我的表的每一行B与表D的所有相关联的行。因此,它应该看起来像这样。

表B的第一行 表d的第一对应行 表d ... 的第二对应行..

表B的第二行 表d 第二相应行的第一行对应表d ... ..

因此,在某种程度上我正在混合2个表中的内容显示 请告诉我如何实现这一目标使用SQL查询的..?

等待回复..!

感谢 大O

回答

0

我相信你可以使用SQL 意见轻松地与很多表

0

你不能在一个SIMPL查询做到这一点的查询数据,你需要一个循环。想想你想做什么...

TABLE B ROW 1 
TABLE D ROW 1 (Matching Row 1 Table B) 
TABLE D ROW 2 (Matching Row 1 Table B) 
TABLE D ROW 3 (Matching Row 1 Table B) 
TABLE B ROW 2 
TABLE D ROW 1 (Matching Row 2 Table B) 
TABLE D ROW 2 (Matching Row 2 Table B) 
TABLE D ROW 3 (Matching Row 2 Table B) 
ETC... 
ETC... 

你可以做到这一点的唯一方法是在存储过程内使用临时表和循环。

1

只需添加另一内连接是这样的:

SELECT B.ta_id,B.type,B.language,B.user_id
FROM乙 INNER JOINÇ ON B.tb_id = C。 tb_id INNER加入D ON B.tb_id = D.tb_id
WHERE C.ta_id = 1
ORDER BY B.user_id