skillup

技術ブログ

Database

リレーションを含んだテーブルでの副問い合わせ

投稿日:2016年2月17日 更新日:

本日はSQLネタです。

下記のようなテーブル構成があったときとします。

注文ヘッダと注文詳細は(1:N)とします。

ここで、product_id=5を含んだ注文ヘッダーレコードを取り出したいとします。

この場合、

とやってはいけません。

上記のようなSQLを発行するとJOINされた結果全てがでてきます。

本来1行の答えが返ってくる場合、3行分の注文ヘッダーテーブルがでてきてしまいます。

こんな時には副問い合わせを使い、下記のように記述すると1行分の答えを取り出すことができます。

参考リンク

EXISTS述語を使った相関副問い合わせ

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

データ構造の基礎知識 後編 木構造

データベースの学習をしていたときの復習です。 データ構造の基礎知識 前編 メモリとポインタ、配列と連結リスト データ構造の基礎知識 中編 ハッシュ 今回はもう少し複雑な「木構造」について考えてみます。 …

no image

MySQLの大文字、小文字問題について

MySQLでテーブルを作る際にカラムに重複を許さない制約(unique)を振ることがあると思います。 数字の場合は問題ないのですが、文字列の場合、なんと英語の大文字と小文字が区別されません。 つまりa …

no image

MySQL safe mode

MySQLに関してしっかりパスワードをチェックしていれば問題ありませんが、中にはrootパスワードをわすれた!なんてこともあるでしょう。 そんなときはsafe modeで実行することでrootのパスワ …

no image

DBの構造について メモリとHDD

データベースについてまたまた学習中。 覚えておきたいポイントなど。 データを収めておくべき媒体では「記憶コスト(単位金額当たりの容量)」と「アクセス速度」の2つが重要なパラメータ メモリとHDDでは前 …

no image

EXISTSについて

今回はEXISTSについてです。 実務では伝票と明細との検索関連の処理で結構出てきます。 なお、達人に学ぶ~では論理学について少しふれており、この領域を本気で理解する場合は論理学を勉強する必要がありま …

アーカイブ