appengine эквивалент запроса "NOT IN" - PullRequest
0 голосов
/ 10 декабря 2010

Я прихожу в Appengine из фона реляционной базы данных и обдумывал, как лучше всего выполнить эту задачу.

По сути, у меня есть таблица объектов, и я хотел бы получить пару, которую пользователь никогда не видел.

Например, в mysql самым простым может быть что-то вроде

SELECT * 
FROM object_pairs
WHERE id NOT IN(
    SELECT object_pair_id
    FROM user_object_pairs
    WHERE user_id = :user_id
)

В идеале я также хотел бы иметь возможность получить случайную (или полуслучайную) пару из возможныхРезультаты.

Любые предложения приветствуются.

Спасибо

1 Ответ

1 голос
/ 13 декабря 2010

Нет простого способа сделать это. Предлагаемый вами SQL-запрос будет выполняться большинством баз данных SQL, сначала создавая список идентификаторов в памяти, затем выполняя линейное сканирование таблицы, возвращая только строки, которых нет в списке идентификаторов. Вы можете сделать то же самое в App Engine: получить «увиденный список» пользователя, выполнить запрос для всех сущностей и пропустить те, которые он видел раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...