Борьба с моим SQL-запросом здесь. У меня есть стол:SQL-запрос с NOT EXISTS для определения того, имеет ли другой атрибут определенные значения
APPS (id, game) Где id - первичный ключ.
Что я пытался сделать, это показать все идентификаторы, которые используют по крайней мере все игры, которые делает человек с идентификатором «Тим». У меня есть запрос, который работает, и возвращает то, что мне нужно, но я собрал его с форумов. Так что мне бы очень хотелось, это краткое и краткое изложение того, как работает запрос. Тяжелые детали не нужны, поскольку я понимаю большую часть терминологии, но только то, что делает запрос, и как он определяет правильные записи.
Мой запрос:
SELECT id
FROM APPS X
WHERE NOT EXISTS
(SELECT *
FROM APPS Y
WHERE id='Tim' AND NOT EXISTS
(SELECT *
FROM APPS Z
WHERE Z.id = A.id AND Z.id = Y.id));
Большое вам спасибо за любую помощь!
Редактировать: запрос работает нормально, но то, что я получил, - это то, как он работает и как он возвращает записи, которые он делает.
Я вижу, что он был сильно вдохновлен реляционной алгеброй и ее двойными негативами для вычисления FOR-ALL, и может быть лучший способ сделать это. –
'A.id' по фамилии выглядит для меня неопределенным. Предполагается, что это 'X.id'? –
Я так не думаю. Ну, это возвращает все, что нужно, поэтому я считаю, что это правильно. – Hoops