skillup

技術ブログ

Database

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

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

本日はSQLネタです。

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

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

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

この場合、

とやってはいけません。

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

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

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

参考リンク

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

-Database
-

執筆者:


comment

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

関連記事

no image

SQL基礎 条件式はunionよりもcaseで

複雑な条件式があったときにcase式を使うことでパフォーマンスを向上させることができます。 ※一般にunionを使うよりも高速なことが多い。 例1 ある条件により別の列を使いたいとき、 [crayon …

no image

複数GROUP BYでの注意

GROUP BYしたときに件数が増えるという現象があったので一応メモ。というか当たり前のことですが・・・ たとえば以下のようなテーブルがあったとします。 student id student_name …

no image

MySQLのメモリ設定

実務で結構サーバーをヘビーに使われるお客さんがいて、SQLが遅くなったりとしています。 なんとか対策しないといけないので、いろいろと調査をいます。 それで今回はMySQLのメモリ問題など。 MySQL …

no image

ユニークキーの設定

MySQLでのユニークキーの設定に関して。 ユニークキーの設定は下記の通り。

ユニークキーを作成した後に確認するのは下記コマンドで。 …

no image

MYSQL group_concat,cast等

実務でいろいろとトラブルがあり、データベースから在庫データを見てくれ~なんて依頼がありましたんでSQLをごりごり書いていたんですが、普段使わないようなSQLの構文を使ったのでここでちょっと紹介します。 …

アーカイブ