SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Oracle SQLアンチパターンの問題集

OracleのSQLのアンチパターンの問題集2

from句のテーブル数を減らす

ダウンロード SourceCode (1.1 KB)

2. 共通集合を取得するSQLのアンチパターン

 共通集合を取得するSQLを考えます。サンプルデータ、修正対象のSQL、出力結果は下記です。

moto
Val1 Val2
1 1
1 2
2 1
2 2
2 3
5 5
saki
Val1 Val2
1 1
2 2
4 1
5 5

 sakiテーブルにVal1とVal2が同じ行が存在する、motoテーブルの行を出力します。Val1とVal2を主キーとします。

修正対象のSQL
select a.Val1,a.Val2
  from moto a,saki b
 where a.Val1 = b.Val1
   and a.Val2 = b.Val2
order by a.Val1,a.Val2;
出力結果
Val1 Val2
1 1
2 2
5 5

 上記のSQLのように、from句でsaki bと記述しているにも関わらず、select句で表別名bからのデータ表示を行っていないSQLは、書き換えることができます。上記のSQLを可読性の高い記述で同じ結果を取得できるSQLに修正して下さい。

ヒント

 sakiテーブルに存在することが出力条件であることに注目してSQLを修正してみます。

次のページ
修正後のSQLと解説

この記事は参考になりましたか?

Oracle SQLアンチパターンの問題集連載記事一覧
この記事の著者

山岸 賢治(ヤマギシ ケンジ)

趣味が競技プログラミングなWebエンジニアで、OracleSQLパズルの運営者。AtCoderの最高レーティングは1204(水色)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3231 2010/08/20 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー