У меня следующая проблема.У нас есть две таблицы, которые выглядят так:
[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.
Если я выполняю таблицу UPDATE, которая возвращает 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.... так что я не знаю, что делать отсюда ..