Мне нужно заполнить пустую таблицу (TAB_A) случайными записями (5%) из TAB_B, объединенными с другими 3 таблицами (C1, C2, C3).
Теперь, если я запускаю следующий запрос, все работает хорошо:
INSERT INTO TAB_A (field1,field2)
SELECT TAB_B.ID_TASS, TAB_B.ID_SEZ
FROM (SELECT TAB_B.*, row_number()
OVER (ORDER BY dbms_random.VALUE) r
FROM TAB_B)
WHERE r < (SELECT COUNT(*) FROM TAB_B)*0.05
Проблема в том, что мне нужно также заполнить поле TAB_A.field3, значения которого находятся в TAB_C3.
Поэтому я переписываю свой предыдущий запрос:
INSERT INTO TAB_A (field1,field2,field3)
SELECT B.ID_TASS, B.ID_SEZ, C3.Z_ID
FROM (SELECT B.*, row_number()
OVER (ORDER BY dbms_random.VALUE) r
FROM TAB_B B
JOIN TAB_C1 C1 on C1.X_ID = B.X_ID
JOIN TAB_C2 C2 on C2.Y_ID = C1.Y_ID
JOIN TAB_C3 C3 on C3.Z_ID = C2.Z_ID
WHERE C3.Z_ID = 9)
WHERE r < (SELECT COUNT(*) FROM B)*0.05
но возникает ошибка: ORA-00904: неверный идентификатор "C3.Z_ID".
Я думаю, что проблема может быть в выражении " SELECT B.ID_TASS, B.ID_SEZ, C3.Z_ID ", которое я изменил в " SELECT TAB_B.ID_TASS, TAB_B.ID_SEZ, TAB_C3.Z_ID".... но без успеха: та же ошибка повторяется.
Кстати, следующий запрос прекрасно работает:
select count(*)
from TAB_B B
JOIN TAB_C1 C1 on C1.X_ID = B.X_ID
JOIN TAB_C2 C2 on C2.Y_ID = C1.Y_ID
JOIN TAB_C3 C3 on C3.Z_ID = C2.Z_ID
WHERE C3.Z_ID = 9
Кто-нибудь может мне помочь?