我需要将 SQL 子查询转换为 SQL JOIN 查询。谁能帮我这个[关闭]

问题描述 投票:0回答:1

我有两个表(链和位置)。列 ChainId 存在于两个表中。我想在使用 Join 的输出中显示第一个查询中提到的所有列加上第二个查询中提到的一个附加列(位置)。

选择 ch.ChainId、ch.ChainCode、ch.Name、ch.IsActive、 ch.CreatedBy, ch.CreatedOn, ch.LastUpdatedBy, (选择计数(*) 从位置 其中 ChainId = ch.ChainId) 作为位置 从 链条 在哪里 ch.IsActive = 1

c# sql-server entity-framework
1个回答
0
投票

考虑到需要聚合一个表而不是另一个表,最安全的选择是将子查询移动到您的

FROM
子句中并使用 LEFT OUTER JOIN:

select 
    ch.ChainId, ch.ChainCode, ch.Name, ch.IsActive, 
    ch.CreatedBy, ch.CreatedOn, ch.LastUpdatedBy,
    lo.Locations 
from 
    Chain ch
    LEFT OUTER JOIN (SELECT count(*) as Locations, ChainID FROM Location GROUP BY ChainID) as lo
        ON lo.ChainID = lo.ChainID
where 
    ch.IsActive = 1
© www.soinside.com 2019 - 2024. All rights reserved.