2013-03-06 64 views
0

我想创建基于两个表的视图。SQL Server:根据指向单个表的ID选择数据

会员:

ID Lang1_ID Lang2_ID - all tinyint 
1 2   3 
2 2   4 
3 1   4 

语言:

ID Title - tinyint, varchar(50) 
1 English 
2 French 
3 Spanish 
4 Portuguese 

我想创建一个包含所有标题的观点:

member_id, Lang1_Title, Lang2_Title 

所需结果:

1 French Spanish 
2 French Portuguese 
3 English Portuguese 

回答

1
SELECT m.id member_id, l.Title Lang1_Title, l2.Title Lang2_Title 
    FROM Member m LEFT JOIN 
     Language l ON m.Lang1_ID = l.ID LEFT JOIN 
     Language l2 ON m.Lang2_ID = l2.ID 

输出

| MEMBER_ID | LANG1_TITLE | LANG2_TITLE | 
----------------------------------------- 
|   1 |  French |  Spanish | 
|   2 |  French | Portuguese | 
|   3 |  English | Portuguese | 

sqlfiddle example

和视图

CREATE VIEW viewname 
AS 
SELECT m.id member_id, l.Title Lang1_Title, l2.Title Lang2_Title 
    FROM Member m LEFT JOIN 
     Language l ON m.Lang1_ID = l.ID LEFT JOIN 
     Language l2 ON m.Lang2_ID = l2.ID 

并使用它

SELECT * FROM viewname 

​​

+0

谢谢。完美的作品! – 2013-03-06 00:53:06

+0

你当然欢迎。祝您好运:D – peterm 2013-03-06 00:55:01