2010-07-08 98 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(或任何列被命名爲)不能爲空,那麼你可以使用一個連接(內部連接)來代替。