Синтаксис вложенных запросов SQL
Извините за мои знания начального уровня по SQL, но я пытаюсь создать запрос, который предоставляет мне общее количество агентов (AgentID) для каждого OfficeID. Если кто-то может направить меня в правильном направлении, а также, если есть ресурсы, которые дают вам множество примеров различных типов запросов, которые будут полезны в будущем!
Моя проблема сейчас в синтаксисе... Я не уверен, куда нужно идти, чтобы получить желаемый результат выше.
Вот что у меня есть сейчас:
Столы ОФИС и АГЕНТ:
CREATE TABLE OFFICE
(
OfficeID NVARCHAR(5) UNIQUE,
OfficeAddress NVARCHAR(18) NOT NULL,
PRIMARY KEY(OfficeID)
)
GO
CREATE TABLE AGENT
(
AgentID NVARCHAR(8) UNIQUE,
OfficeID NVARCHAR(5) NOT NULL,
AgentType NVARCHAR(9) NOT NULL,
AgentFName NVARCHAR(10) NOT NULL,
PRIMARY KEY (AgentId),
FOREIGN KEY (OfficeID) REFERENCES OFFICE
ON DELETE CASCADE
ON UPDATE CASCADE
)
GO
Запрос:
SELECT
OFFICE.OfficeID
FROM
OFFICE,
(SELECT COUNT(AgentID)
FROM AGENT, OFFICE
WHERE OFFICE.OfficeID = AGENT.OfficeID
GROUP BY AGENT.OfficeID)
ORDER BY
OFFICE.OfficeID
3 ответа
Примерно так (желаемый вывод отсутствует):
SELECT O.OfficeID
, (
SELECT COUNT(*)
FROM AGENT A
WHERE A.OfficeID = O.OfficeID
)
FROM OFFICE O
ORDER BY O.OfficeID
Я бы сделал это с помощью JOIN и GROUP BY, вложенности не требуется или не требуется:
SELECT o.OfficeID, COUNT(a.AgentID) NumberOfAgents
FROM Office o
LEFT JOIN Agents a ON a.OfficeID = o.OfficeID
GROUP BY o.OfficeID
Вы должны быть конкретны с тем, что вы хотите, в соответствии с тем, что, я думаю, в вашем случае не требуется сложный запрос. Например, вы можете получить желаемый результат из запроса ниже
Select officeid, count(1) as NoofAgents from Agents
group by officeid
SQL может дать вам желаемый путь во многих отношениях, и вы можете выбрать их на основе оптимизированного решения.
Наслаждайся, приятель