原理:
在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
另外一种方法记录下,还未测试。