来自多个表的Sql视图

时间:2015-04-04 22:32:06

标签: sql sql-server join view

我遇到了疑问,请帮忙。 我想创建视图。

表1

ID | Acode | Bcode | Ccode |
1  | 10    | 101   | 102   |
2  | 11    | 100   | 101   |
3  | 10    | 100   | 102   |

表2

Acode | Adescription |
10    | English      |
11    | Math         |

表3

Bcode | Bdescription |
100   | Grade A      |
101   | Grade B      |

表4

Ccode | Cdescription |
 100  | Level A      |
 101  | Level B      |
 102  | Level C      |

我想根据table1中的代码打印Table1中的所有行和其他表中的描述。

输出应该是: 数据

NewView的

ID | Acode |Adescription | Bcode | Bdescription | Ccode | Cdescription |
1  | 10    | English     | 101   |   Grade B    |  102  |   Level C    |
2  | 11    | Math        | 100   |   Grade A    |  101  |   Level B    |

3 | 10 |英语| 100 | A级| 102 |等级C |

我创建了左连接,但它返回的行数多于table1中的实际值。我希望只有table1中的所有记录和其他表中的描述。

请帮忙

2 个答案:

答案 0 :(得分:0)

以下是一个例子。由于您没有发布原始查询尝试,因此我们无法确切说明您获取多行的原因。除非您在联接表中缺少代码,否则无需LEFT JOIN

SELECT  Table1.ID
      , Table1.Acode
      , Table2.Adescription
      , Table1.Bcode
      , Table3.Bdescription
      , Table1.Ccode
      , Table4.Cdescription
FROM    dbo.Table1
        JOIN dbo.Table2 ON Table2.Acode = Table1.Acode
        JOIN dbo.Table3 ON Table3.Bcode = Table1.Bcode
        JOIN dbo.Table4 ON Table4.Ccode = Table1.Ccode;

答案 1 :(得分:0)

感谢您的帮助

LEFT加入运作良好。我试图逐一缩小表格,找到了我获取重复记录的表格。找到表后,我发现我忘了添加唯一键,并且输入了1条记录(描述)两次,这给出了重复记录,并且总行数增加了。

感谢所有人帮助我,Dan Guzman指出了重复的代码。