MSSQLSERVERデータベース-マルチテーブルクエリinner join
3277 ワード
長い間寮にいてC#とSQLをしていませんでした.昨日先生の宿题が终わるとあって、また仕事をやり直した.
問題を直して、昨夜出会った小さな問題について話して、inner joinにマルチテーブルクエリーをさせることについて話します.
本格的なプロジェクト開発メンテナンスに従事したことがない人や、多くの学生にとって、データベースに汲々としたプログラムを作るときにinner joinを使う必要は少ないのではないでしょうか.
自分でやると、表のどのフィールドを自分で書いたかが多いからです.
しかし、ある日作成したテーブルがあなたではない場合、問題が発生しました.他の人が作成したテーブルを使用しますが、他の人が作成したテーブルにはデータベースフィールドがありません.
既存のテーブルにプライマリ・キーに基づいて追加のテーブルを作成する必要があります
クエリーを行うときに2枚のテーブルを合わせたい場合はinner joinを使います.
Inner joinを使うのは簡単ですが、私が出会った小さな問題は、2つのテーブルのinner joinではなく、4つのテーブルのinner joinを3枚ほしいということです.どう書けばいいですか.
この小さな問題です!
過程を記録しておく
3つのテーブルを作成した後、データを挿入します.
3枚の表のそれぞれの表示を見てみましょう.
studentOneのテーブル:
id lid stname 1 5132春暁2 5100未名
studentTwoのテーブル:
id stname sex age email 1春暁男1 [email protected] 2未名男2 [email protected]
studentThreeのテーブル:
id lid english chinese1 5132 50 602 5100 70 30
最後にinner joinを使用してクエリーします
id lid stname id stname sex age email id lid english chinese 1 5132春暁1春暁男1 [email protected] 1 5132 50 6025100未名2未名男2 [email protected] 2 5100 70 30
しかし、表の中にいくつかの重複するフィールドがあることを発見して簡単にSQL文を修正します
最後に表示される結果は次のとおりです.
id lid stname age email sex stname chinese english 1 5132春暁1 [email protected]男春暁60 502 5100未名2 [email protected]男未名30 70
問題を直して、昨夜出会った小さな問題について話して、inner joinにマルチテーブルクエリーをさせることについて話します.
本格的なプロジェクト開発メンテナンスに従事したことがない人や、多くの学生にとって、データベースに汲々としたプログラムを作るときにinner joinを使う必要は少ないのではないでしょうか.
自分でやると、表のどのフィールドを自分で書いたかが多いからです.
しかし、ある日作成したテーブルがあなたではない場合、問題が発生しました.他の人が作成したテーブルを使用しますが、他の人が作成したテーブルにはデータベースフィールドがありません.
既存のテーブルにプライマリ・キーに基づいて追加のテーブルを作成する必要があります
クエリーを行うときに2枚のテーブルを合わせたい場合はinner joinを使います.
Inner joinを使うのは簡単ですが、私が出会った小さな問題は、2つのテーブルのinner joinではなく、4つのテーブルのinner joinを3枚ほしいということです.どう書けばいいですか.
この小さな問題です!
過程を記録しておく
create table studentOne
(
id int primary key identity(1,1),
lid int,
stname nvarchar(50)
)
create table studentTwo
(
id int primary key identity(1,1),
stname nvarchar(50),
sex nvarchar(2),
age int,
email nvarchar(50)
)
create table studentThree
(
id int primary key identity(1,1),
lid int,
english nvarchar(50),
chinese nvarchar(50)
)
3つのテーブルを作成した後、データを挿入します.
insert into studentOne(lid,stname) values(5132,' ')
insert into studentOne(lid,stname) values(5100,' ')
insert into studentTwo(stname,sex,age,email) values(' ',' ','1','[email protected]');
insert into studentTwo(stname,sex,age,email) values(' ',' ','2','[email protected]');
insert into studentThree(lid,english,chinese) values(5132,'50','60');
insert into studentThree(lid,english,chinese) values(5100,'70','30');
3枚の表のそれぞれの表示を見てみましょう.
select * from studentOne;
select * from studentTwo;
select * from studentThree;
studentOneのテーブル:
id lid stname 1 5132春暁2 5100未名
studentTwoのテーブル:
id stname sex age email 1春暁男1 [email protected] 2未名男2 [email protected]
studentThreeのテーブル:
id lid english chinese1 5132 50 602 5100 70 30
最後にinner joinを使用してクエリーします
select * from studentOne
inner join studentTwo on studentOne.stname = studentTwo.stname
inner join studentThree on studentOne.lid = studentThree.lid
id lid stname id stname sex age email id lid english chinese 1 5132春暁1春暁男1 [email protected] 1 5132 50 6025100未名2未名男2 [email protected] 2 5100 70 30
しかし、表の中にいくつかの重複するフィールドがあることを発見して簡単にSQL文を修正します
select studentOne.id,studentOne.lid,studentOne.stname,studentTwo.age,studentTwo.email,
studentTwo.sex,studentTwo.stname,studentThree.chinese,studentThree.english
from studentOne
inner join studentTwo on studentOne.stname = studentTwo.stname
inner join studentThree on studentOne.lid = studentThree.lid
最後に表示される結果は次のとおりです.
id lid stname age email sex stname chinese english 1 5132春暁1 [email protected]男春暁60 502 5100未名2 [email protected]男未名30 70