假设我有三个名为
的表Department
-------------
DeptID DeptName
------ ---------
1 Accounts
2 Sales
3 Purchase
Location
----------
LocID LocName
------ --------
1 China
2 UK
3 USA
4 Germany
Employee
----------
EmpID Name Salary LocID DeptID
----- ----- ------ ----- -------
1 jhon 15000 1 2
2 Sina 12500 3 1
3 Keith 17420 2 3
EMPID是员工表的PK,也是员工表与locid和deptid连接的位置和部门。
在简单的sql中我们可以很容易地加入并显示像
这样的数据empid name salary locname deptname.
但在我的情况下,我不想通过tablename.columnname对连接进行硬编码。
我宁愿查询系统tabele并获取关系并动态构建连接。我在sql中不是很好。所以请有人帮忙处理样品,因此我可以动态构建连接.............请帮忙。
答案 0 :(得分:0)
您可以像这样获取表的主键列:
select *
from sys.identity_columns c
where c.object_id = object_id('TableName')
然后你可以得到一个像这样的表的外键列:
select *
from sys.foreign_key_columns fkc
inner join sys.columns c on c.object_id = fkc.parent_object_id and c.column_id = fkc.parent_column_id
where fkc.parent_object_id = object_id('TableName')
通过这种方式,您可以为表之间的连接生成SQL。这将涉及SQL中的大量字符串操作,这不是很愉快。
总的来说,我建议尽可能不使用动态SQL。 SQL需要动态吗?