我的数据库中有一些表,我想使用 join 将它们组合起来,但我遇到了问题。让我说清楚。我已将Id_num
(列名)指定为表中的主键,Stu_info
其他表有一个Id_num
列来存储 ID 号。
所有表都具有Id_num
将存储 ID 号的列的相同名称 ( )。我试图创建一个视图来连接表以从特定表中获取特定数据。如果我使用INNER JOIN
,那么由于一些空值,它不会显示任何行。但是我用过LEFT OUTER JOIN
它正在工作。但这带来了一个不可接受的问题。
代码 :
SELECT
dbo.Stu_info.Id_num, dbo.Development_fee.Dvf, dbo.Stu_info.Stu_name,
dbo.Stu_info.Dep_name, dbo.Tuition_fee.Acy, dbo.Tuition_fee.Tui_fee,
dbo.Registration_fee.Reg_fee, dbo.Form_fill_up_fee.Acy AS Expr1,
dbo.Form_fill_up_fee.FFF, dbo.Examination_fee.E_typ, dbo.Examination_fee.Exm_fee,
dbo.monthly_instal.Instm, dbo.monthly_instal.Paid
FROM
dbo.Stu_info
LEFT OUTER JOIN
dbo.Tuition_fee ON dbo.Stu_info.Id_num = dbo.Tuition_fee.Id_num
LEFT OUTER JOIN
dbo.Registration_fee ON dbo.Stu_info.Id_num = dbo.Registration_fee.Id_num
LEFT OUTER JOIN
dbo.Examination_fee ON dbo.Stu_info.Id_num = dbo.Examination_fee.Id_num
LEFT OUTER JOIN
dbo.monthly_instal ON dbo.Stu_info.Id_num = dbo.monthly_instal.Id_num
LEFT OUTER JOIN
dbo.Development_fee ON dbo.Stu_info.Id_num = dbo.Development_fee.Id_num
LEFT OUTER JOIN
dbo.Form_fill_up_fee ON dbo.Stu_info.Id_num = dbo.Form_fill_up_fee.Id_num
例如,表Dvf
的列Development_fee
有一个数据,表Tui_fee
的列Tuition_fee
有六个数据,用于具有以下 ID 的学生LAB10161117
。
现在,如果您尝试使用以下代码
Select * from View_1
Where Id_num = 'LAB10161117'
要获取以下 ID LAB10161117 的数据,那么您应该获取以下信息。喜欢
ID number : LAB10161117
-----------------------------------------
Development Fee ---- Tuition Fee ---- Other columns
10000 ---- 1000
Null ---- 1000
Null ---- 1000
Null ---- 1000
Null ---- 1000
Null ---- 1000
因为表Dvf
的列Development_fee
有一个条目LAB10161117
是10000
&表Tui_fee
的列Tuition_fee
有六个条目LAB10161117
是1000, 1000, 1000, 1000, 1000, 1000
。但它不像上面的信息那样显示。当我执行以下代码以显示该 ID 的数据时
Select * from View_1
Where Id_num = 'LAB10161117'
然后它显示错误的信息,如
ID number : LAB10161117
-----------------------------------------
Development Fee ---- Tuition Fee ---- Other columns
10000 ---- 1000
10000 ---- 1000
10000 ---- 1000
10000 ---- 1000
10000 ---- 1000
10000 ---- 1000
这是不对的!这意味着要与Tuition_fee
有六行的表匹配,它已经Development_fee
再次生成了相同的表值(六次),尽管Development_fee
表对于具有以下 ID 的人只有一行LAB10161117
。
我只想准确地显示表中存在的行,并且我想停止行重复。你能帮我解决这个问题吗?请帮助我摆脱这个问题。谢谢你。