2012-09-27 30 views
1

我正在使用第三方SQL Server數據庫,其中包含下面兩個表(簡化),我想將它們合併到一個視圖中。SQL加入包含從/到值的表

文獻表包含以下列: ID主鍵
「其他列」。

DocumentTag表包含以下幾列: FromDocumentID ToDocumentID 標籤

如何創建形式Document.ID標籤「等欄目」的看法?
將每個文檔的標籤(是的,帶有重複的)加入,而不是在文檔標籤表中查找正確的ID範圍。

[編輯]一個例子:

文檔表格

ID | Description | Owner .... 
------+-------------+--------- 
1  | blah  | me 
2  | blah 2  | me 
3  | blah 3  | Alice 
4  | blah 4  | Bob 
5  | blah blah | me 
6  | blah blah 2 | Bob 
7  | blah blah 3 | Alice 
8  | blah blah 4 | Alice 

文件變量表

FromDocumentID | ToDocumentID | Tag   | ... 
---------------+--------------+-------------+---- 
1    | 3   | Bananas 
4    | 4   | Crocodiles 
5    | 5   | Bananas 
6    | 8   | Donuts 

我想吃點什麼是

ID | Description | Owner | Tag  | .... 
------+-------------+--------+----------+----- 
1  | blah  | me  | Bananas 
2  | blah 2  | me  | Bananas 
3  | blah 3  | Alice | Bananas 
4  | blah 4  | Bob | Crocodiles 
5  | blah blah | me  | Bananas 
6  | blah blah 2 | Bob | Donuts 
7  | blah blah 3 | Alice | Donuts 
8  | blah blah 4 | Alice | Donuts 
+0

似乎很簡單,雖然我是可疑的有效它將是。您是否想要爲每個鏈接添加一行(Doc1,Doc1ToDoc2Tag)和(Doc2,Doc1ToDoc2Tag)或每對配對一行,例如Doc1,Doc1ToDoc2Tag,Doc2 –

+0

這個意義不大。什麼是「而不是正確的ID範圍」?究竟你想加入什麼? – Paparazzi

+0

請發佈一些示例數據和預期結果,或使用工作數據模型創建[SQL小提琴](http://sqlfiddle.com/)。 – Taryn

回答

1

如果標籤適用於許多文件按範圍分類

select D.ID, T.Tag, D.Other1, D.Other2 
from Document D 
left join DocumentTag T on D.ID between T.FromDocumentID and T.ToDocumentID 

如果標籤適用於ID爲2的特定文檔。這也顯示了創建一個視圖

create View DocumentWithTag 
as 
select D.ID, T.Tag, D.Other1, D.Other2 
from Document D 
left join DocumentTag T on D.ID in (T.FromDocumentID, T.ToDocumentID)