データベースにいくつかのテーブルがあり、結合を使用してそれらを結合したいのですが、問題があります。はっきりさせておきます。Id_num(列名) をテーブルの主キーとして割り当てましStu_infoた。他のテーブルにはId_numID 番号を格納する列があります。
すべてのテーブルにはId_num、ID 番号を格納する列の同じ名前 ( ) があります。特定のテーブルから特定のデータを取得するためにテーブルを接続するビューを作成しようとしました。私が使用するINNER JOINと、いくつかの null 値のために行が表示されません。しかし、私は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は 1 つのデータがあり、テーブルTui_feeの列にTuition_feeは次の ID を持つ学生の 6 つのデータがあります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の列には が 1 つのエントリがあり、テーブルの列には が 6 つのエントリがあるためです。しかし、上記のような情報は表示されません。次のコードを実行してそのIDのデータを表示するとDevelopment_feeLAB1016111710000Tui_feeTuition_feeLAB101611171000, 1000, 1000, 1000, 1000, 1000
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
これは正しくありません!これは、次の ID を持つ人に対してテーブルが 1 行しかないにもかかわらず、テーブルTuition_feeの同じ値がDevelopment_fee何度も (6 回)生成された 6 行のテーブルと一致することを意味します。Development_feeLAB10161117
テーブルに存在するものを正確に行に表示したいだけで、行の重複を止めたいのです。この問題を解決するのを手伝ってくれませんか? この問題を解決するのを手伝ってください。ありがとうございました。