データベースにいくつかのテーブルがあり、結合を使用してそれらを結合したいのですが、問題があります。はっきりさせておきます。Id_num
(列名) をテーブルの主キーとして割り当てましStu_info
た。他のテーブルにはId_num
ID 番号を格納する列があります。
すべてのテーブルには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_fee
LAB10161117
10000
Tui_fee
Tuition_fee
LAB10161117
1000, 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_fee
LAB10161117
テーブルに存在するものを正確に行に表示したいだけで、行の重複を止めたいのです。この問題を解決するのを手伝ってくれませんか? この問題を解決するのを手伝ってください。ありがとうございました。