人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MYSQLで質問です。
ユーザーの購入履歴から、あるアイテムを持っていないユーザーを抽出したいのですが、良い方法はありますでしょうか?

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● くろふね
●34ポイント

スマフォからなのでサンプルは出せませんが、not exsistを調べれば答えが出てくると思います。


くろふねさんのコメント
一応家に帰って来ましたので書きますと、 ユーザテーブル(ユーザID,ユーザ名)ユーザの情報 購入履歴テーブル(連番,ユーザID,商品ID)購入履歴の情報 というテーブルがあった場合 SELECT A.ユーザID ,A.ユーザ名 FROM ユーザテーブル A WHERE NOT EXISTS ( SELECT 'x' FROM 購入履歴テーブル B WHERE A.ユーザID = B.ユーザID AND B.商品ID = 'ターゲットの商品ID' ) ORDER BY ユーザID ASC; という感じで「ターゲットの商品ID」に対象の商品IDを入れると購入してないユーザが表示されます。

2 ● y-kawaz
●33ポイント

情報が少ないですが一般的な構成で以下のようなテーブルがあったと仮定します。

例えばitem_idが123の商品を購入していないユーザを取得するなら↓こんなSQLでいいと思います。

SELECT * FROM users WHERE id NOT IN (SELECT user_id FROM history WHERE item_id=123);

3 ● 蝸牛角上争何事
●33ポイント

このような形のSQLになります。

SELECT USER_NAME FROM BUYING_HISTORY
 WHERE NOT EXISTS (SELECT * FROM BUYING_HISTORY WHERE ITEM = '○○○○')

NOT EXISTSに続く副問い合わせの検索結果が行を返せばWHERE句の判定が偽になります。

以下はMYSQLのマニュアルの該当部分のリンクです。ご確認ください。
http://dev.mysql.com/doc/refman/5.1/ja/exists-and-not-exists-subqueries.html

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ