SQL查询嵌套选择语法

时间:2018-12-05 03:36:39

标签: sql-server nested-query

请问我对SQL的初学者了解如何,但是我试图创建一个查询,向我提供每个OfficeID的代理总数(AgentID)。如果有人可以指导我正确的方向,或者是否有资源可以为您提供许多对将来有用的不同类型查询的示例!

我现在的问题是语法...我不确定要在上面获得所需输出的地方。

这是我现在拥有的:

表格办公室和代理商:

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 个答案:

答案 0 :(得分:2)

我可以使用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

答案 1 :(得分:0)

这样的事情(您期望的输出似乎丢失了):

SELECT O.OfficeID
  , (
    SELECT COUNT(*)
    FROM AGENT A
    WHERE A.OfficeID = O.OfficeID
)
FROM OFFICE O
ORDER BY O.OfficeID

答案 2 :(得分:0)

您需要根据我的需求具体说明所需的内容,我认为您不需要这种复杂的查询。例如,您可以从以下查询中获得所需的输出

Select officeid, count(1) as NoofAgents from Agents 
group by officeid

SQL可以通过多种方式为您提供所需的方式,您可以根据优化的解决方案进行选择。

享受伴侣