SQL Server 关联多表查询合同内外方案及对应承包商名称
关联方案
你现有SQL中a表对应外场父合同,b表对应内场子合同,只需要基于对应合同的ContractId关联供应商关联表、承包商数据表即可,下面以获取内场合同绑定的承包商为例给出最终SQL:
select a.PlanCode as `exterior plan code`, b.PlanCode as `interior plan code`, cd.Name as `Contractor name` from contractmaster a join contractmaster b on a.ContractId = b.ParentContractId -- 关联合同-供应商映射表,用内场合同ID关联,如果要取外场合同的供应商就换成a.ContractId join contractsupplierassoc csa on b.ContractId = csa.ContractId -- 关联承包商表取名称 join contractordata cd on csa.ContractorId = cd.ContractorId where a.IsCompleted = 1
注意事项
- 如果你需要取外场父合同绑定的承包商,只要把
contractsupplierassoc的关联条件改成a.ContractId = csa.ContractId即可。 - 如果存在一个合同绑定多个承包商的场景,查询结果会按承包商拆分成多条,符合一对多关联的逻辑。
内容的提问来源于stack exchange,提问作者maX
相关产品推荐
相关产品推荐

