sql三表链接查询

  select * from [dbo].[Contract_BaseInfor] as x
  join [dbo].[MaterialType] as a on x.RowGuid = a.ContractRowGuid
  join [dbo].[EquipmentEFile_Category] as b on a.RowGuid = b.MaterialDetailRowGuid
  join [dbo].[EquipmentEFile] as c on c.ParentRowGuid = b.RowGuid
  where x.RowGuid='655b9e4f-4f75-4eeb-8598-de14834dd640' and a.Count >0 and c.IsMaxVersion=1
  order by c.StorageName

 dmrlist:合同列表

var contractMT = (from con in dmrlist
                                  join m in dc_ModelData.MaterialType.Where(p => p.MonomerProject == bidRowGuid && p.Count > 0) on con.RowGuid equals m.ContractRowGuid
                                  select new { ConName = con.Name, ConRowGuid = con.RowGuid, MTRowGuid = m.RowGuid } into jtemp
                                  group jtemp by new { jtemp.ConName, jtemp.ConRowGuid } into temp
                                  select new { ConName = temp.Key.ConName, ConRowGuid = temp.Key.ConRowGuid, MTCount = temp.Count() }).ToList();
                int contractMTCount = contractMT.Count;

                var contractEFile = (from con in contractMT
                                     join m in dc_ModelData.MaterialType.Where(p => p.MonomerProject == bidRowGuid && p.Count > 0) on con.ConRowGuid equals m.ContractRowGuid
                                     join h in dc_ModelData.EquipmentEFile_Category.Where(p => p.BidSectionRowGuid == bidRowGuid && p.Title == "族文件") on m.RowGuid equals h.MaterialDetailRowGuid
                                     join k in dc_ModelData.EquipmentEFile.Where(p => p.IsMaxVersion == true) on h.RowGuid equals k.ParentRowGuid
                                     select new { ConName = con.ConName, ConRowGuid = con.ConRowGuid, MTRowGuid = m.RowGuid, EFileRowGuid = k.RowGuid } into jtemp
                                     group jtemp by new { jtemp.ConName, jtemp.ConRowGuid } into temp
                                     select new { ConName = temp.Key.ConName, ConRowGuid = temp.Key.ConRowGuid, EFileCount = temp.Count() }).ToList();
                int contractEFileCount = contractEFile.Count;
原文地址:https://www.cnblogs.com/wangzuofei/p/13156168.html