Скопируйте столбец из одной таблицы в другую в oracle - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь скопировать столбец [codigomall] таблицы 'sectores 'в столбец [malla] таблицы 'grm'. До сих пор я пробовал следующее:

update grm
set grm.malla = (select c.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
where exists (select c.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)

Oracle указывает на правильность процесса, но не копирует значения в grm.malla.

I попытался заменить c.codigmall на j.codigmall, но Oracle дал мне ошибку:

update grm
set malla = (select j.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
where exists (select j.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)

Знаете ли вы, где я терплю неудачу? У меня такое ощущение, что j.codigomall является ошибкой

Контекст: есть два пространственных слоя, я хочу наследовать один столбец от другого с помощью пространственного наложения

1 Ответ

0 голосов
/ 13 февраля 2020

Я думаю, что ваша проблема, скорее всего, в том, что ваша внешняя таблица (та, которую вы обновляете) никак не связана с вашим запросом выбора. Я удивлен, что он не выдает ошибку, поскольку вы сказали, что запрос на выборку возвращает несколько строк, и вы пытаетесь присвоить их одному столбцу (grm.malla).

I попробуйте это и посмотрите, поможет ли это.

update grm a
set a.malla = (select c.codigomall from sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
where exists (select c.codigomall from sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
...