2012-09-06 170 views
-4

我想加入以下三個表,其中我的條件是t1.eid = 1.加入表後,我想用0填充空表格單元格。我想加入第一個t1用t2表示t1.eid = 1,然後將結果與t3結合起來,其中t3表示t3的結果,其中t3.vid =新結果.vid。加入3選擇查詢的結果

數據樣本:

CREATE TABLE t1 (
sid INT, 
fid INT, 
eid INT, 
i INT, 
uid INT); 

INSERT INTO t1 (sid, fid, i, eid, uid) VALUES (1, 1, 1, 1, 1), (2, 2, 1, 1, 2), (3, 1, 
1, 2, 1), (4, 2, 1, 2, 2), (5, 1, 1, 3, 1), (6, 2, 1, 3, 2), (7, 1, 1, 1, 3); 


CREATE TABLE t2 (
d INT, 
vid INT, 
eid INT 
); 

INSERT INTO t2(d, vid, eid) VALUES (1, 1, 1) , (1, 2, 1) , (1, 3, 2) , (1, 4, 
2) , (1, 5, 3) , (1, 6, 3) ; 

CREATE TABLE t3 (
vid INT, 
fr INT, 
sr INT, 
aj INT, 
sj INT, 
fid INT, 
uid INT 
); 

INSERT INTO t3(vid, fr, sr, aj, sj, fid, uid) VALUES (1, 0, 100, 0.1, 1, 1, 1) , ( 
2, 0, 1000, 1, 1, 2, 2) , (3, 0, 300, 0.1, 1, 1, 1) , (4, 0, 200, 1, 1, 2, 2) , ( 
5, 0, 1000, 0.25, 10, 1, 1) , (6, 0, 200, 1, 1, 2, 2) , (7, 0, 150, 1, 0.1, 1, 1) 
, (8, 0, 350, 1, 0.1, 1, 1) , (9, 0, 1050, 10, 0.25, 1, 1) , (10, 0, 1050, 1, 0, 
2, 2) , (11, 0, 250, 1, 0, 2, 2) , (12, 0, 250, 1, 0, 2, 2) ; 
+1

請在您的文章中添加圖像。 –

+6

不要讓SO用戶下載文件。好得多,如果你可以直接在這裏發表,或者如果沒有,在[SQLFiddle.com]上發佈(http://www.sqlfiddle.com) –

+3

比添加圖像要好得多,在問題 –

回答

1

嘗試這樣的事情,

SELECT a.*, b.*, c.*   -- select your desired columns here 
FROM t1 a INNER JOIN t2 b 
      ON a.eid = b.eid 
     INNER JOIN t3 c 
      ON b.vid = c.vid 
WHERE a.eid = 2 

OR

SELECT b.d, a.fid, a.uid, a.i, a.eid, c.fr, c.sr, c.aj, c.sj 
FROM t1 a INNER JOIN t2 b 
      ON a.eid = b.eid 
     INNER JOIN t3 c 
      ON b.vid = c.vid 
WHERE a.eid = 2 

你可能會奇怪,爲什麼有表名後的字母。實際上他們被稱爲Alias。當你有更長的tableNames時,有時會有幫助。

+0

感謝您的幫助,但是當我在我的桌子上測試您的查詢時,我沒有得到正確的結果,因爲我的表格中有大量數據 –

0
SELECT t2.d, t1.fid, t1.uid, t1.i, t1.eid, 
    ISNULL(t3.fr), ISNULL(t3.sr), ISNULL(t3.aj), ISNULL(t3.sj) 
FROM t1 
INNER JOIN t2 ON t1.eid = t2.eid 
RIGHT JOIN t3 ON t2.vid = t3.vid 
WHERE t1.eid = 1 OR t2.eid = 1 
+0

感謝您的幫助。但不幸的是,仍然問題沒有解決,因爲我的表中有很多數據。 –

0
select T2.D,t1.fid,t1.uid,t1.eid,t3.fr,t3.sr,t3.aj,t3.sj 
from T1 
    left outer join T2 ON t1.EID=t2.EID 
    Left Outer JOin T3 ON T1.Fid=T3.Fid and T1.Uid=t3.Uid; 
+0

感謝您的幫助,您的想法有助於解決部分結果,但不是全部,因爲我的表中有很多數據。 –