2_04_12-検索処理(副問い合わせ-3 複数列副問い合わせ)(select)

PHPとPostgreSQLを利用したWEBシステムの開発例を掲載していきます。腕時計 販売サイト my-watch.biz



● 2_04_12-検索処理(副問い合わせ-3 複数列副問い合わせ)(select)

いきなりSQLの仕様から入るとややこしいので、具体例から行きます。
下記は先の相関副問い合わせで使ったテーブル「e_shouhin_t」、商品一覧のデータです。カラム名は分かり易いように別名を付けています。


下の段の2つを赤く塗っています。

仮に社内で、上のほうから「7,800円以上の商品と同じサイズ、同じカテゴリの商品がどれだけあるか調べてくれ。」
と言われたとします。

これが先の赤く塗っているデータが上からの指示に相当するデータです。

つまり、7,800円以上の商品は2つ有り、
「サイズはM、カテゴリはts(Tシャツ)」と、
「サイズはL、カテゴリはts(Tシャツ)」
の商品を検索すればいいわけです。

もし処理を分ければ以上のようになります。

これをSQL1行で書くと以下になります。

SELECT
  *
FROM
  e_shouhin_t
WHERE
  ( e_shouhin_size, e_shouhin_group )
in
  (SELECT e_shouhin_size, e_shouhin_group FROM e_shouhin_t WHERE e_shouhin_kakaku >= 7800)

実行すると以下が検索されます。



赤く塗っている部分を見てもらうと、
「サイズはM、カテゴリはts(Tシャツ)」と、
「サイズはL、カテゴリはts(Tシャツ)」
となっています。

7,800円以上の商品を検索したのではなく、7,800円以上の商品の複数のカラムの組み合わせを検索したのです。
この辺を勘違いしないで下さい。

SQLの赤の文字の部分が対応しています。

PostgreSQLの正式マニュアルでは以下のページが副問い合わせに相当します。
4.2.9. スカラ副問い合わせ
9.16. 副問い合わせ表現


戻る

Copyright (c) 2007 MSweb All Rights Reserved

腕時計 クロノグラフ(時計)のメンズ専門販売サイトカシオ G-SHOCK、Baby-G(腕時計)専門の通信販売サイトG-SHOCK、Baby-G専門通販サイト 運営ブログ

腕時計 女性専用 販売のladies-watch.biz腕時計 メンズ(男性)専門販売のmens-watch.biz