goo blog サービス終了のお知らせ 

データベース

必要な知識の覚書です。

いよいよSQL

2010年01月20日 | DB
仕様まとまってないまま、
構築フェーズに入ったはものの、
結局基本設計の残課題整理に追われています。

困っちゃいますね...

そんな中、待望の??SQLに突入ダス。

本テーブルと、その明細テーブルがあって、
私は単純に結合してみてくれ!程度にしか考えてなかったんだけど、
データが増えれば増えるほど、そうはいかなくなるんだなってことが
やっとわかった。

たぶん今日言われてたことは、

明細テーブルでとってきたキー
を副問い合わせの条件にして、
本テーブルから、その情報だけを取ってくる!
ってことだ。

あかんのう。

だからたぶんこゆこと。

SELECT *
WHERE 本テーブル.管理番号
IN ( SELECT 明細テーブル.管理番号
   WHERE 明細テーブル.年月日 = 画面.年月日 )

ガンガン入れ子になったデータが出力されるイメージ
元から検索対象となる数は少ないほうがいいだろうとのことで、
とにかくパフォーマンスも考える必要があるってこってす

さ~て、明日もがんばろぉ


○副問い合わせ時の注意点

・副問い合わせは、ほかの問い合わせ結果に基づく問い合わせ
・単一行比較演算子(=、<、<=、>、>=、!=)を使用した場合、1行と比較できる。複数行戻るとエラー
・複数行比較演算子(IN、ANY、ALL)を使用すれば複数行と比較できる


○参考にしたページ
副問い合わせの構文を覚える
サブクエリ
SQLで複数の表からデータを取り出す


○次に覚えたいページ
CASE式のススメ(後編)