2010-11-01 63 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