一位互联网老兵华立的个人日志。

多表关联查询

原理:

在BalanceOrder表中如果

EntityType = 1 读 Member  的Name

EntityType = 2 读 Company 的Name

EntityType = 3 读 MercantileAgent 的Name

 

SELECT   BalanceOrder.Id, BalanceOrder.Status, BalanceOrder.Checkintime, BalanceOrder.OrderNo, BalanceOrder.Price, 
                BalanceOrder.AddBalance, BalanceOrder.PayMode, BalanceOrder.TradeNo, BalanceOrder.Title, BalanceOrder.EntityId, 
                BalanceOrder.EntityType, 
                CASE BalanceOrder.EntityType WHEN 1 THEN Member.Name WHEN 2 THEN Company.Name ELSE MercantileAgent.Name
                 END AS Name
FROM      dbo.BalanceOrder AS BalanceOrder LEFT OUTER JOIN
                dbo.Member AS Member ON BalanceOrder.EntityType = 1 AND 
                BalanceOrder.EntityId = Member.MemberId LEFT OUTER JOIN
                dbo.Company AS Company ON BalanceOrder.EntityType = 2 AND 
                BalanceOrder.EntityId = Company.CompanyId LEFT OUTER JOIN
                dbo.MercantileAgent AS MercantileAgent ON BalanceOrder.EntityType = 3 AND 
                BalanceOrder.EntityId = MercantileAgent.MercantileAgentId

另外一种方法记录下,还未测试。

阅读 3 编辑于 2022/10/13 14:44