皆さんこんにちは!こんばんは!!ロト君です。今回は備忘録も兼ねて、SQLのJOIN句で複数のテーブルを結合するモノを記載したいと思います!!
テーブル内容
テーブルの内容は下記のモノです。
ID | asset_name | buy_company_id | state |
1 | 資産1 | 1 | 1 |
2 | 資産2 | 1 | 2 |
3 | 資産3 | 2 | 2 |
ID | buy_company_name | postal | notice |
1 | 株式会社AAA | 000-0001 | 会社の情報1 |
2 | 有限会社BBB | 000-0002 | |
3 | 社団法人CCC | 000-0002 | 会社の情報2 |
ID | key_name | name1 | value1 |
1 | 状態 | 所有 | 1 |
2 | 状態 | リース | 2 |
3 | 状態 | 売却 | 3 |
4 | 所有 | 有限会社GGG | 1 |
上記のように、t_asset, t_buy_company, t_env が、あるとします。これを結合します。
結合式
結合式は下記のモノです。
Dim db As New Connection_DB
db.Sql.AppendLine("SELECT")
db.Sql.AppendLine("T1.ID")
db.Sql.AppendLine(",T1.asset_name")
db.Sql.AppendLine(",T2.buy_company_name")
db.Sql.AppendLine(",T3.name1")
db.Sql.AppendLine("FROM (t_asset AS T1")
db.Sql.AppendLine("LEFT OUTER JOIN t_buy_company AS T2 ON")
db.Sql.AppendLine("T1.buy_company_id = T2.ID)")
db.Sql.AppendLine("LEFT OUTER JOIN t_env AS T3 ON")
db.Sql.AppendLine("T1.state = T3.value1")
db.Sql.AppendLine("WHERE")
db.Sql.AppendLine("T3.key_name = '状態'")
db.Selecter()
'db.resultDt 結果を返すDataTable
結果はこんな感じ。
ID | asset_name | buy_company_name | name1 |
1 | 資産1 | 株式会社AAA | 所有 |
2 | 資産2 | 株式会社AAA | リース |
3 | 資産3 | 有限会社BBB | リース |
LEFT OUTER JOINをする事によって、左側に属するデータを逆側の参照テーブルに結合するイメージです。
御覧の様に、右側のテーブルの一部が参照対象になります。
3つ以上テーブルを結合する場合は()が必要になってきます。
各テーブルはAS句で別名称に変えると簡単に参照、条件分岐が可能です。
まとめ
C#での説明はネットで探せば多くありましたが、VB.NET版は少なかったので記載した次第です。
Connection_DBなどは自作クラスなので、そこについては割愛しています。基本の、SQL接続でやっています。
SQLをマスターはまだしていませんが、色々構文を修正すると何千倍も高速に処理が出来ますので今回見直しましたww
今後も、改良をしていこうと思いますので、よろしくお願い致します。
では、今回はここまで!(^-^)ノシ≡3
コメントを残す