2011-09-21 3 views
0

다음과 같은 문제가 있습니다. 우리는 같이 두 개의 테이블이 있습니다CROSS JOIN 및 UPDATE THIRD TABLE은 작동하지 않습니다.

[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에서 세그먼트는 서로 나는 CROSS은 T1과 T2의 가입 어떤 세그먼트를 찾을 할 필요가 겹쳐 각 다른

선택하려면 세그먼트를 겹칠 수 T2 그 반대의 여러 분야에서

  • 세그먼트를 겹칠 수 t2에서부터 t1에있는 것을 겹쳐서 t3에 삽입하십시오.

    나는 CROSS JOIN을 대체하지 않습니다 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; 
    

    내가 T3 INTO INSERT 않는 (또는 내부 조인) 경우

    을 반환 테이블 UPDATE를 수행합니다. ... 그래서 여기에서 무엇을 해야할지 모르겠다. ..

  • 답변

    0

    나는 쿼리 구문이 틀렸다고 생각한다.

    업데이트 명령 구문은 update <table> set x=(select query),... where ...

    그리고 당신은 그 과정에서 T3에 가입하고 조인 명령에서 만든 임시 테이블 (t3 CROSS JOIN (t1, t2))를 업데이트하려고하는 것 같습니다 여기에 더이었다.

    크로스 조인 구문도 확인하십시오.

    +0

    문제는 t2의 여러 세그먼트가 t1과 겹칠 수 있다는 것입니다. – madkitty

    관련 문제