2011-06-08 74 views
-1

假設我有所謂的三個表關於動態加入 - 需要幫助

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,也EMPLOYEE表由LOCID和DEPTID與位置和部門參加。

在簡單的SQL我們可以加入很容易,並顯示像

empid name salary locname deptname. 

數據,但在我的情況,我不想硬編碼由tablename.columnname加入。

而是我想查詢系統表並獲得關係並動態建立聯接。我在sql中不是很好。所以請有人幫助樣本,因爲我可以動態構建連接.............請幫助。

+0

你爲什麼想要這樣做? – HLGEM 2011-06-08 18:58:36

+0

你真的想讓它變得複雜嗎? – Lobo 2011-06-08 19:01:01

+1

你*不*這樣做。簡單。你寫一個基於表定義的顯式JOIN – gbn 2011-06-08 19:03:26

回答

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需要動態變化是否有很強的理由?

+0

可以請你給我一個小樣本。 – Thomas 2011-06-09 10:34:52