skillup

技術ブログ

Database

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

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

本日はSQLネタです。

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

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

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

この場合、

とやってはいけません。

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

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

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

参考リンク

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

-Database
-

執筆者:


comment

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

関連記事

no image

CASE式のすすめ その3

本日もCASE式です。 下記のようなテーブル(studentclub)があるとします。 std_id | club_id | club_name | main_club_flg —&#82 …

no image

JPAでのリレーションに関して

JPAではテーブルをクラスで定義します。もちろん例外とかはいろいろあるのですが、1テーブル1クラスというつくりで、これをエンティティと呼びます。 もともとクラスを作ってからDBを作成したり、JTAの規 …

no image

浮動小数点に関して

金額計算なんかでfloatを使うと誤差が出るっていうのは基礎的な話ではありますが、背景知識を含めて理解しておこうと思ったのでメモります。 Contents1 float,doubleでの誤差2 金額の …

no image

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

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

no image

SQL基礎 結合に関して

SQL実践入門を読んで勉強しておりますが、本日は結合に関して。 Contents1 クロス結合2 内部結合3 外部結合4 結合のアルゴリズムとパフォーマンス4.1 NestedLoops4.2 Has …

アーカイブ