この記事を読むのに必要な時間は約 6 分です。
前回まではSelect文の基本的な使い方なり検索の仕方などを説明してきました。今回からは一気に内容を濃ゆくしていろいろな技術的な方法を小出しで出していきたいと思います。関数なども利用していきますのでその都度その都度覚えてください。
SQL学習サイトオープン
SQLが自習できるサイトをオープンしました!!
そのなも・・・
初学者はご活用ください。
( *´艸`)
Selectした結果をSelectする
select した結果の再利用
サンプルテーブルを見てみましょう。
前回の流れで都道府県名の中に【山】が混じっているデータの一覧を作ります。
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT top (1000) [漢字都道府県名] ,[漢字市区町村名] ,[num] FROM [test001].[dbo].[shicyouson] where [漢字都道府県名] like '%山%'
ここまでは大丈夫ですね。
それではこの結果に対して、市区町村名に【山】が入っているデータを求めてみましょう。
難しい事を言わないのであれば、 where 区の条件を以下に書き換えるだけです。
where [漢字都道府県名] like ‘%山%’ and [漢字市区町村名] like ‘%山%’
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT top (1000) [漢字都道府県名] ,[漢字市区町村名] ,[num] FROM [test001].[dbo].[shicyouson] where [漢字都道府県名] like '%山%' and [漢字市区町村名] like '%山%'
こんな感じですね。
ただ、難しい結合を続けていくと、検索結果に対してさらに検索を行いたい事がでてきます。今回のような簡単な例で実演をしてみたいと思います。
因みにやり方は非常に簡単です。
書いてみる。
元々のSQL文がこの様な状態の場合
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT top (1000) [漢字都道府県名] ,[漢字市区町村名] ,[num] FROM [test001].[dbo].[shicyouson] where [漢字都道府県名] like '%山%'
この様に書き換えてみてください。
select * from ( /****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT top (1000) [漢字都道府県名] ,[漢字市区町村名] ,[num] FROM [test001].[dbo].[shicyouson] where [漢字都道府県名] like '%山%' ) TBL_yama
ほい
おんなじ結果ができました!
SQL文で違いを見てみましょう。 下の赤文字で書いている部分が増えています。
select * from
(
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/
SELECT top (1000) [漢字都道府県名]
,[漢字市区町村名]
,[num]
FROM [test001].[dbo].[shicyouson]
where [漢字都道府県名] like ‘%山%’
) TBL_yama
(
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/
SELECT top (1000) [漢字都道府県名]
,[漢字市区町村名]
,[num]
FROM [test001].[dbo].[shicyouson]
where [漢字都道府県名] like ‘%山%’
) TBL_yama
もうちょっというと以下のような感じです。
++++++++++++++++++++++++++
select * from
(
***元のSQL文
(
***元のSQL文
) hogehoge
++++++++++++++++++++++++++
↑
このテーブル名はぶっちゃけ何でも良いです。※自分で意味が分かれば
こうすることにより、Selectした結果に対してさらにSelect文を行う事ができます。
それでは最初のお題通り、
- [漢字都道府県名]に【山】を含む都道府県に対して
- [漢字市区町村名]に【山】を含む市区町村をさらに検索する
を実行してみたいと思います。
select * from ( /****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT top (1000) [漢字都道府県名] ,[漢字市区町村名] ,[num] FROM [test001].[dbo].[shicyouson] where [漢字都道府県名] like '%山%' ) TBL_yama where TBL_yama.漢字市区町村名 like '%山%'
これ↓をした時と同様の結果を求める事ができましたね。
where [漢字都道府県名] like ‘%山%’ and [漢字市区町村名] like ‘%山%’
この書き方は、長いSQL文を書くことになった場合は必須の技術です。苦手意識を持つことなく挑戦してください。
本日はここまで!