Я создал следующий скрипт для поиска строк, глубина которых +-2 фута от другой строки:
select a.*
from WELL_FORMATION a,
WELL_FORMATION b
where a.UWI=b.UWI
and a.FORM_ID=b.FORM_ID
and a.SOURCE != 'ABCD'
and b.SOURCE = 'ABCD'
and abs(a.GX_FORM_TOP_DEPTH - b.GX_FORM_TOP_DEPTH) <= 2
Этот скрипт возвращает именно то, что мне нужно. Теперь мне нужно удалить результаты этого запроса.
Используя информацию, найденную здесь, я пришел к следующему:
DELETE t1
from well_formation t1
inner join
(
select a.*
from WELL_FORMATION a,
WELL_FORMATION b
where a.UWI=b.UWI
and a.FORM_ID=b.FORM_ID
and a.SOURCE != 'ABCD'
and b.SOURCE = 'ABCD'
and abs(a.GX_FORM_TOP_DEPTH - b.GX_FORM_TOP_DEPTH) <= 2
) t2 on t1.uwi=t2.uwi
and t1.form_id=t2.form_id
and t1.source=t2.source
Однако я получаю сообщение об ошибке, в котором говорится, что Sybase не может найти таблицу с именем t1. Когда я удаляю "t1" после DELETE, я получаю сообщение об ошибке внутреннего соединения.
Я знаю, что получаю правильные результаты, потому что если я заменю «DELETE t1» на «SELECT *», я получу записи, которые хочу удалить.
Я использую SQL Anywhere. Есть ли у кого-нибудь предложения о том, что еще я мог бы попробовать?
Спасибо!