2011-09-21 47 views
0

我有以下問題。我們有一個看起來像兩個表:CROSS JOIN和UPDATE THIRD TABLE does not work

[t1] 
Ruler ID1 S1 E1 
**1  a 1 10** 
1  b 17 24 
1  c 20 24 
1  d 21 24 
*2  e 40 47*  

[t2] 
Ruler ID2 S2 E2 
**1  a 7 15** 
**1  b 8 16** 
2  c 25 35 
*2  d 41 50* 

[t3] 
Ruler ID1 S1 E1 ID2 S2 E2 
**1  a 1 10 a 7 15 
1  a 1 10 b 8 16** 
*2  e 40 7 d 41 50* 
  • 我們大約有20級(在這裏我只是顯示比例1和2)
  • S1(S2)和E1(E2)分別代表開始和結束在規模上的位置
  • L1(L2)是每個段的長度。從T1段可以重疊,從T2,反之亦然多段
  • 段可以重疊,彼此重疊的,我需要做一個CROSS JOIN T1和T2和查找段各 其他

要選擇段從t2重疊在t1中,然後插入到t3中。

如果我這樣做,返回0匹配行

UPDATE t3 CROSS JOIN (t1, t2) ON 
    ((t2.S2 BETWEEN t1.S1 AND t1.E1) OR (t2.E2 BETWEEN t1.S1 AND t1.E1)) 
SET t3.CHR1 = t1.CHR1, t3.ID1 = t1.ID1, t3.S1 = t1.S1, t3.E1 = t1.E1, t3.ID2 = 
t2.ID2, t3.S2 = t2.S2, t3.E2 = t2.E2 
WHERE t1.CHR1 = t2.CHR2; 

如果我不INSERT INTO T3(或INNER JOIN)不更換CROSS JOIN表更新。 ...所以我不知道該怎麼辦...

回答

0

我相信你的查詢語法是錯誤的。

更新命令語法是 update <table> set x=(select query),... where ...

而更多的在這裏,它看起來像你在這個過程中加入T3,並試圖以更新加入命令創建臨時表(t3 CROSS JOIN (t1, t2))。

請檢查交叉連接的語法。

+0

問題是t2的多個段可以重疊t1 .. – madkitty