我有一个查找表,其中包含名称和ID。例如:
ID NAME
-----------------------------------------------------------
5499EFC9-925C-4856-A8DC-ACDBB9D0035E CANCELLED
D1E31B18-1A98-4E1A-90DA-E6A3684AD5B0 31PR
第一条记录显示和订单状态。下一个表示服务类型。
在订单表的查询中,我执行以下操作:
INNER JOIN order.id = lut.Statusid
这将从我的查找表中返回“已取消”的名称。我还需要同一行中的服务类型。这是订单表中的orders.serviceid连接我将如何进行此操作?
已取消但未连接到31PR。
订单连接到两者。订单中有2个字段,名为Servicetypeid和orderstatusid。这就是那些2连接到订单的方式。我需要在同一行中返回两个名称。
答案 0 :(得分:1)
我想很多人会告诉你,在同一列中有两个不同的数据会违反第一个普通形式。有一个原因,为什么有一个查找表来统治它们是一个坏主意。但是,您可以执行以下操作:
Select ..
From order
Join lut
On lut.Id = order.StatusId
Left Join lut As l2
On l2.id = order.ServiceTypeId
如果order.ServiceTypeId
(或任何列的名称)不可为空,那么您可以改为使用Join(内部联接)。
答案 1 :(得分:0)
遗漏了很多信息,但在这里:
SELECT orders.id, lut1.Name AS OrderStatus, lut2.Name AS ServiceType
FROM orders
INNER JOIN lut lut1 ON order.id = lut.Statusid
INNER JOIN lut lut2 ON order.serviceid = lut.Statusid