SQL加入包含from / to值的表

时间:2012-09-27 22:32:41

标签: sql sql-server tsql join

我正在使用第三方SQL Server数据库,其中包含下面的两个表(简化),我想将它们合并到一个视图中。

文档表包含以下列: 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

1 个答案:

答案 0 :(得分: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)