
はじめまして。
商品データベースのカタログ表示の際のSQLの質問です。
www.amazon.co.jp のサイトでは、ある商品を選択すると、「この商品を買った人は、こんな商品も買っています」と表示されます。
この内部的な処理方法を教えてください。
例えば、以下のような単純なテーブルがあるとします。
●顧客テーブル
・顧客番号
・顧客名
●商品テーブル
・商品ID
・商品名
・販売単価
●注文テーブル
・注文番号
・注文日時
・顧客番号
・小計
●注文詳細テーブル
・注文番号
・注文詳細番号
・商品ID
・数量
このような設計の場合、「ある商品を買った人は、こんな商品も買っています」を実現するために
・バッチで裏で処理するのでしょうか?それとも注文のたびに処理するのでしょうか?
・どのテーブルに、保存するのでしょうか?
・どのようなSQL文になりますか?(具体的に教えてください)
また、別の適切な設計方法があるのでしょうか?
困っています・・・
お手数ですがよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
こんにちは。
それは、いろいろ方法がありますよ。
店舗の目的、つまり「客に買わせること」を考えると、本当に他の客が買ったものを表示する必要はなく、何らかのカテゴリで一致するものを表示させればいいですよね。「他の人はこんなのも一緒に買っているけど、あなたはどう?」と聞かれると、心が動くものです。
~~~
商品テーブルに「カテゴリ」を追加し、「カテゴリテーブル」を追加する。カテゴリテーブルは、必要なら自己参照して階層化する。
~~~
次に、いくつかの商品をまとめ買いできる(たいていそうでしょうけど)なら、まとめ買いした商品を並べるようにすればいいわけです。まさしく「こんな商品も買っています」となりますね。これは「注文テーブル」と「注文詳細テーブル」から、現在買おうとしている商品コードを検索し、一緒に買ったものをもう一度検索すればいいわけです。
~~こんな感じ(未検証)
SELECT "商品テーブル"."商品名"
FROM "商品テーブル", "注文テーブル", "注文詳細テーブル" "現在の商品", "注文詳細テーブル" "一緒に買った商品"
WHERE "現在の商品"."商品ID" = [今表示している商品のID]
AND "現在の商品"."注文番号" = "注文テーブル"."注文番号"
AND "一緒に買った商品"."注文番号" = "注文テーブル"."注文番号"
AND "一緒に買った商品"."商品ID" = "商品テーブル"."商品ID"
~~Oracle9.2を想定
1つ目と2つ目を組み合わせ、より「的確度」を高めることができます。または、2つ目でヒットがなければ1つ目で表示するという手もあります。
また、もう一つ注意しなければならないのが特許です。簡単に思いつきそうなのでとれていないかもしれませんが、「他の人が一緒に買ったものを表示する」ことについて特許がとられていれば、同じようなことをすることはできません。または特許料を払う必要があります。
あと、人から聞いてものを業務で使うときは、ちゃんと理解してからにしてくださいね。何らかの不具合があったとき、直すのは“あなた”なのですから。
ご回答有難う御座います。
大変参考になりました。
自分の中で曖昧だった部分がすっきりと晴れました。
とても、感謝しております。
(追申)
この質問用途用のダミーなカテゴリーを使用している方も
いらっしゃるのでしょうか?(具体的なアイデアありましたらお聞かせください)
私はこんな別の方法を使っているという方がいましたらぜひお聞かせください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) accessについて 2 2022/05/31 16:58
- Amazon アマゾン 7 2022/06/11 11:03
- SQL Server SQLのクエリの書き方 1 2022/03/29 23:06
- Excel(エクセル) エクセルデーターの並び替え 5 2022/08/06 09:59
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「テーブルに座って……」という...
-
会社の飲み会の幹事になり、座...
-
お金持ちのテーブル
-
ユーザーテーブルとシステムテ...
-
TDLにお弁当の持込をしたい!
-
テーブルの容量の一覧を表示さ...
-
男性と2人で飲食店に行きテーブ...
-
複数テーブル表示
-
【エクセル】データテーブルの...
-
連番に紐づく小連番の最大値を...
-
特定物と不代替物の違い
-
ヤフオクの商品説明で<table>タ...
-
SQL2008 クエリ文について
-
SQL2008 クエリ文について
-
SQL2008 クエリ文について
-
LINQでn:nテーブルを階層オブジ...
-
英文にしてください。お願いし...
-
【SQL】1つのレコード内にある...
-
スペース区切りによるAND検索を...
-
データベース上の全てのテーブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
会社の飲み会の幹事になり、座...
-
「テーブルに座って……」という...
-
面接のときテーブルが正面に。...
-
L2SWはARPテーブルを持っている?
-
テーブルリンク リンク元を知...
-
飲み会で、座敷orテーブルどち...
-
外部キーだけのテーブル(主キ...
-
男性と2人で飲食店に行きテーブ...
-
論理名とコメント構文(?)について
-
【エクセル】データテーブルの...
-
オーダーの覚え方について
-
まるいテーブル 円い 丸い 漢字...
-
リレーションシップが出来ません。
-
アクセスのリンクテーブル一覧...
-
UTF8のテーブルをODBCドライバ...
-
1対1のリレーション(主キー同...
-
データベースの接続に失敗して...
-
mysqlのupdate構文についての質...
-
妹が、メルカリで売れた商品を...
-
ACCESS での LEFT JOIN 時の WH...
おすすめ情報