アプリ版:「スタンプのみでお礼する」機能のリリースについて

商品マスタがあり、データは下記の感じで登録されています。
 コード | 商品名  | 商品カナ | 分類コード ・・・
---------------------------------------------------------
 0001  | マウス  | マウス  | 01     ・・・
 0002  | キーボード| キーボード| 01     ・・・
 0003  | モニター | モニター | 01     ・・・
         ・
         ・
         ・

SQL文で質問があります。

下記のSQLでは取得できるんですが・・・
SELECT * FROM M_SHOHIN WHERE code = ANY('{0001,0002,0003}');

下記のSQLを実行したらエラーが出力されました。
SELECT * FROM M_SHOHIN WHERE code = ANY(
 SELECT ARRAY_AGG(code) AS code FROM M_SHOHIN WHERE class_code = '01'
);

ERROR: operator does not exist: character varying = character varying[]
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

なので下記のようにCASTをするようにして実行したらエラーは出力されなくなりましたがデータの取得ができませんでした。
SELECT * FROM M_SHOHIN WHERE code = ANY(
 SELECT CAST(ARRAY_AGG(code) AS VARCHAR) AS code
 FROM M_SHOHIN WHERE class_code = '01'
);

どのようにすれば取得できますでしょうか。
説明が下手で申し訳ありませんがアドバイスいただけませんでしょうか。
データベースはPostgreSQL 8.4.9です。
宜しくお願いします。

A 回答 (2件)

SELECT * FROM M_SHOHIN WHERE code = ANY(


SELECT code FROM M_SHOHIN WHERE class_code = '01'
);
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お蔭様で取得する事ができました。
本当にありがとうございます。

お礼日時:2012/10/14 08:48

「副問い合わせのみで実行」して「望んでいる結果が得られるか」を確認してから


外側と組み合わせてみては?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2012/10/14 08:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!