Как объединить эти два запроса в один? - PullRequest
0 голосов
/ 11 сентября 2018

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

Запрос A:

SELECT TOP 5 ([Parent]), [Game ID] 
FROM Games 
WHERE [Parent] = 'Zelda' 
ORDER BY [Game ID] DESC;

Запрос B:

SELECT QueryA.[Parent], QueryA.[Game ID] 
FROM QueryA 
WHERE Mid(QueryA.[Game ID], 5) NOT IN (
    SELECT MAX(Mid(Game.[Game ID], 5)) 
    FROM Game
);

Отдельно эти запросы работают, но кажется, что это можно объединить в один запрос. Я пытаюсь понять, как. Я думал, что могу сделать что-то вроде

SELECT QueryA.[Parent], QueryA.[Game ID] 
FROM (
    SELECT TOP 5 ([Parent]), [Game ID] 
    FROM Games 
    WHERE [Parent] = 'Zelda' 
    ORDER BY [Game ID] DESC
) 
WHERE Mid(QueryA.[Game ID], 5) NOT IN (
    SELECT MAX(Mid(Game.[Game ID], 5)) 
    FROM Game
);

Но это не тот случай. Кажется базовым, но я пытаюсь понять это.

1 Ответ

0 голосов
/ 11 сентября 2018

Ваша проблема может заключаться в том, что вы забыли псевдоним для своего подзапроса.Попробуйте это:

SELECT QueryA.[Parent],
       QueryA.[Game ID]
FROM
    (SELECT TOP 5 ([Parent]), [Game ID]
     FROM Games
     WHERE [Parent] = 'Zelda'
     ORDER BY [Game ID] DESC) as QueryA
WHERE Mid(QueryA.[Game ID], 5) NOT IN
        (SELECT MAX(Mid(Game.[Game ID], 5))
         FROM Game);

А если это не решение проблемы, происходит какая-то ошибка, которую вы могли бы показать?

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