У меня есть набор brochure
объектов, которые имеют разные версии language
, хранящиеся в моей базе данных. brochure
поделится doc_id
во всех своих версиях. Вот как выглядит моя БД:
___________________________________________________
| id | doc_id | language | etc... |
| 1 | 628fdd40 | en | |
| 2 | 628fdd40 | fr | |
| 3 | 0ba86e5b | en | |
| 4 | 628fdd40 | jp | |
etc...
Я хочу лениво загружать эти брошюры по мере необходимости, используя запрос, подобный
SELECT * FROM Brochures
WHERE (id BETWEEN 10 AND 20)
но я не хочу выбирать какие-либо брошюры дважды - то есть, если я выбрал французскую версию, я не хочу также выбирать английскую, японскую и т. Д. Версии. Я не могу гарантировать, что брошюры будут внесены в базу данных последовательно (как показано в примере с БД выше)
Я думал об использовании предложения NOT IN
для фильтрации ранее выбранных doc_id
, но это потребовало бы от меня постоянно растущего списка doc_id
где-то, скорее всего в $_SESSION
или передать этот список с помощью моих запросов AJAX. Это не похоже на элегантное решение.
Я также подумал, что, может быть, мне удастся запустить другую таблицу, которая отслеживает ранее выбранные doc_id
против сессий, запустив UPDATE
после каждого выбора и затем выполнив подзапрос предложения NOT IN
. Я не уверен в последствиях там.
Есть ли что-нибудь умное, что я могу сделать здесь? Кто-нибудь придумал что-нибудь подобное? Имеет ли это смысл?