У меня возникли проблемы с записью запроса. У меня есть поддержка, называемая «MYTABLE», и у нее есть столбец «TABLENAME», который может содержать одно или несколько имен таблиц. Несколько таблиц разделяются запятыми.Ошибка написания SQL-запроса
Пример:
TBLUSER
TBLUSER, TBLACCOUNT
Я пытаюсь написать запрос, который будет идентифицировать все записи в таблице MyTable, которые не являются допустимыми таблицами в базе данных. Я был в состоянии написать последующих ....
SELECT *
FROM MYTABLE T1
LEFT outer JOIN ALL_TAB_COLS T2
ON ( upper(T1.TABLENAME) = upper(t2.Table_Name)
AND T2.Owner = 'ME'
)
WHERE TABLE_NAME IS NULL;
И это работает точно так же, как я хочу - но это работает только тогда, когда запись в MYTABLE содержит одну таблицу. Когда есть несколько таблиц, разделенных запятыми - это терпит неудачу. Мои навыки SQL немного отсутствуют, и мой естественный инстинкт - «Делать для каждого», но я считаю, что это неправильный подход (и я не знаю, как это сделать в SQL).
Почему в мире вы бы сохранили несколько таблиц в одной строке? – TheTXI
Обратная нормализация, TheTXI. Это ярость. – Welbog
Я считаю, что первоначальная мысль заключалась в том, что пользователям «нетехнических» было бы легче модифицировать данные, если бы они могли просто ввести все в одном поле. Я не уверен, согласен ли я с этим или нет; но, к сожалению, это «как это». Естественно, когда одна из этих таблиц ошибочна, это приводит к сбою приложения - я надеялся написать SQL-запрос, чтобы идентифицировать строки, которые приведут к сбою. –