skillup

技術ブログ

Database

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

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

本日はSQLネタです。

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

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

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

この場合、

とやってはいけません。

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

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

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

参考リンク

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

-Database
-

執筆者:


comment

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

関連記事

no image

DBUtils活用

普段はJavaEEで開発を行っているのでデータベースへのアクセスはJPAを活用しています。 ただ、JavaEE環境だとglassfish経由でデータベースを動かしているので、glassfishを動かさ …

no image

Postgresメモ(データベース、スキーマ、他pgadminなど)

postgresをちょこちょこ触っており、超基礎的な事に関してMySQLでは触れられていないネタなどについて。 以前のリンク Postgresの基礎(主にMySQLとの違いなど) Contents1 …

no image

HAVING句について NULL時の動き

HAVING句のNULLがあった時の挙動にたいしてメモリます。 COUNTの処理 対象上の列数を数えるのにCOUNTを使うと思いますが、COUNT(*)とCOUNT(列名)では動きが若干違っており、前 …

no image

日付がらみの処理に関して(MySQL&Java)

MySQL触りだして3年ぐらいたつんですがいまだに整理できないことが多いです。(特に日付がらみ) ちょっとJavaのネタと合わせて整理しておこうかなーと思います。 Contents1 MySQLの日付 …

no image

自己結合のイメージ

前回に引き続き結合について考えます。 例えば下記のようなテーブルがあり、重複行を削除するとします。 1 りんご 50 2 みかん 100 3 みかん 100 4 みかん 100 5 バナナ 80 この …