Есть две таблицы, которые содержат информацию о Книгах.Давайте назовем их BooksData1
и BooksData2
.
У меня есть другая таблица, в которой есть bookIds и языки, назовем это BookIdsAndLang
.Мне нужно собрать данные о книгах для всех bookIds и языков в таблице BookIdsAndLang
.Сначала проверьте таблицу BooksData1
, если найдены совпадения bookIds и языков, прочитайте из таблицы.Для bookIds и языков, которые не были найдены в BookData1
, читайте от BooksData2
.Если существуют bookIds и языки, которых нет ни в BooksData1
, ни в BooksData2
, то регистрируйте сообщения об ошибках для них.
В текущей реализации BooksData1 уже внутренне объединен с BookIdsAndLang
для bookIds и языка.Теперь только для bookIds и языков в BookIdsAndLang
, которые не были найдены в BooksData1
, нужно искать в BooksData2
.
Как определить, какие bookIds и языки не были сопоставлены в BooksData1
, чтобы их можно было объединить с BooksData2
.Ищите масштабируемое решение, так как в будущем могут появиться BooksData3 и BooksData4.
Решение 1: Временная таблица скажет MissingBooksData
.Вставьте в него bookIds и языки, которых нет в «BooksData1».Затем выполните
BooksData2
inner join
MissingBooksData
on Ids and languages
Нам нужно избегать предложения where..in, поскольку оно имеет ограничение 65536 значений, и этот вариант использования легко превзойдет его.
Пожалуйстапредложить, как лучше спроектировать это.Спасибо