在同一个DB中加入TSQL表

时间:2016-08-08 12:36:09

标签: sql-server tsql

我想在同一个数据库中对两个表进行简单连接。

预期结果是: 从表T_Dree中获取与表T_Tree中的TREE_CATEGORY相同的所有Node_ID

我的T_Documents表格:

+--------+----------------+---------------------+
| Doc_ID | TREEE_CATEGORY |        Desc         |
+--------+----------------+---------------------+
|  89893 |           1363 | Test                |
|  89894 |          1364  | with a tab or 4 spa |
+--------+----------------+---------------------+

T_Tree Tabel

+----------+-------+
| Node_ID  | Name  |
+----------+-------+
|    89893 | Hallo |
|   89894  |   BB  |
+----------+-------+

Doc_ID是T_Documents表中的主键,Tree_Category是外键

Node_ID是T_Tree Tabel

中的主键
SELECT DBName.dbo.T_Tree.NODE_ID
FROM DBName.dbo.T_Documents
 inner join TREE_CATEGORY on T_Documents.TREE_CATEGORY = DBName.dbo.T_Tree.NODE_ID

我无法弄清楚如何正确地做到这一点..这是否是正确的方法?

2 个答案:

答案 0 :(得分:2)

你很亲密。试试这个:

SELECT t2.NODE_ID
FROM DBName.dbo.T_Documents t1
INNER JOIN DBName.dbo.T_Tree t2
    ON t1.Doc_ID = t2.NODE_ID

评论:

  • 我在查询中使用了别名,这是表名的简写。别名可以使查询更容易阅读,因为它不再需要始终列出完整的表名。
  • 您需要在JOIN子句中指定表名,并使用用于加入ON子句的列。

答案 1 :(得分:0)

您的 SQL 应为:

SELECT DBName.dbo.T_Tree.NODE_ID
  FROM DBName.dbo.T_Documents d
 inner join T_Tree t on d.Doc_ID = t.Node_ID

请记住:您加入关系(表格),而不是字段。

此外,要使其正常工作,您需要在Node_IDDoc_ID字段上设置常用值。也就是说,对于Doc_IDT_Documents中的每个值,Node_ID表的T_Tree字段中的值必须相等。