2010-07-08 45 views
0

我有一个查找表,其中有一个名称和一个ID。示例:SQL同一行中的同一列

ID             NAME 
----------------------------------------------------------- 
5499EFC9-925C-4856-A8DC-ACDBB9D0035E    CANCELLED 
D1E31B18-1A98-4E1A-90DA-E6A3684AD5B0    31PR 

第一条记录指示和订单状态。下一个表示服务类型。

在从订单表我做下面的查询:

INNER JOIN order.id = lut.Statusid 

这将返回从我的查找表中的“取消”的名字。我也需要在同一行中的服务类型。这是通过orders.serviceid在订单表中连接的我将如何去做这件事?

它取消不连接到31PR。

订单连接到两者。订单在其中有两个名为Servicetypeid和orderstatusid的字段。这就是这些2如何连接到订单。我需要在同一个订单行中返回两个名称。

+0

你必须确定你的“未来”的意思。 GUID通常不会增加,并且插入行的顺序没有保证的含义 – Andomar 2010-07-08 18:55:01

+1

两行如何连接(您如何知道'取消'状态已连接到31pr服务类型)? – ScottK 2010-07-08 18:56:09

回答

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 
+0

知道了谢谢! – user380432 2010-07-08 19:08:06

1

我想很多人会告诉你,在同一列中有两个不同的数据片段违反了第一范式。有一个理由,为什么有一个查找表来统治他们都是一个坏主意。但是,你可以做类似如下:

Select .. 
From order 
    Join lut 
     On lut.Id = order.StatusId 
    Left Join lut As l2 
     On l2.id = order.ServiceTypeId 

如果order.ServiceTypeId(或任何列被命名为)不能为空,那么你可以使用一个连接(内部连接)来代替。