У меня есть поле, которое может быть в трех разных таблицах.Первая таблица - это архив;хотя архив предполагается для обновления при изменении полей, существует ненулевая вероятность, что этого не произойдет.Таким образом, я хотел бы найти две другие таблицы, в которых поле является взаимоисключающим (очищается после объединения со второй по третью таблицы).
В моем последнем операторе select после совместного использования внешнего объединения в этих таблицах я предполагаю решить эту проблему, реализовав оператор select следующим образом:
SELECT Field IFNULL(Table2, IFNULL(Table3, Table1))
Цель второго IFNULLв том случае, если по какой-либо причине его не было по какой-либо причине, в архиве могла бы быть информация (указывающая на проблему).
Есть ли более элегантное решение этой проблемы, которое я пропускаю?Я относительно новичок в SQL и как таковой не очень хорошо знаком с лучшими практиками.Я думаю, что эта функция не будет слишком ресурсоемкой из-за того, что уже объединены таблицы 1, 2 и 3, но я не уверен.
Это поле также используется для объединения таблиц, и если его нет в этомтаблица, запись не будет существовать в этой таблице по моим критериям запроса.Мой план состоит в том, чтобы использовать это для нескольких различных полей.
Это в конечном итоге будет в параметризованном подготовленном выражении, используемом для реализации функций поиска во внешнем интерфейсе.