バージョン選択

フォーラム

メニュー

オンライン状況

30 人のユーザが現在オンラインです。 (24 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 30
もっと...

サイト内検索

質問 > 管理機能 > 売切れ日時を取得したい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ecbg
投稿日時: 2009/10/29 17:32
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
売切れ日時を取得したい
コンテンツ管理>CSV出力項目設定>高度な設定
において以下で売切れになったアイテムは出力できるのですが、
売切れになった日時の取得はできませんでしょうか?

t1.product_code as 商品コード,
FROM
dtb_products_class as t1, dtb_classcategory as t2
WHERE
t1.classcategory_id1 = t2.classcategory_id
AND
t1.stock = 0
ORDER BY
t1.product_code

「product_id」と「order_id」を紐付けていって、
「dtb_order」で該当商品が最も新しく買われた「create_date」を
取得できないかと悩んでおります・・・

どうかお力お貸し頂けないでしょうか?
seasoft
投稿日時: 2009/10/29 18:32
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 売切れ日時を取得したい
面白いアイディアですね。
多分、サブクエリで出来ますよ。

サブクエリで、外側の値(product_id)を紐付ける方法を勉強すれば解決できると思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

ecbg
投稿日時: 2009/10/29 19:20
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 売切れ日時を取得したい
ご回答有難うございます!

色々な条件を書き出してみたところ、
「dtb_order」で最新の日付を選択するのではなくて、
「dtb_order_detail」で該当「product_id」に対して最も大きい「order_id」の数値を取り出して、
その「order_id」に紐付く「create_date」でないと
最新の受注日時に辿り付けないようです・・・

ただそれだと「dtb_order」でdelが立ってたときに戻らないとで悩みどころが増えました。。
「dtb_products_class」の「update_date」がストックの変更で更新されれば良いのですが・・・

とまぁ条件は分ったのですが、SQLにするにどうするのか試行錯誤です=3
ecbg
投稿日時: 2009/10/29 19:50
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 売切れ日時を取得したい
product_idまで入れてあげれば日付が取り出せるまで来たのですが、以下の部分が分りません!

SELECT
to_char(create_date, 'YYYY/MM/DD HH24:MI') as 売切れ日時
FROM
dtb_order
WHERE
order_id =
(
SELECT
MAX(order_id)
FROM
dtb_order_detail
WHERE
product_id = --<ここに(*1)のSELECT結果を入れたいのですが
GROUP BY
product_id
)

(*1)
SELECT
product_id
FROM
dtb_products_class
WHERE
stock = 0
hogehoge
投稿日時: 2009/10/29 19:58
対応状況: −−−
常連
登録日: 2008/9/19
居住地: Cusco,Peru
投稿: 67
Re: 売切れ日時を取得したい

product_id IN
 (
   SELECT
   product_id
   FROM
   dtb_products_class
   WHERE
   stock = 0
 )

で、どうでしょう?

試してないので外してたらすいません。
ecbg
投稿日時: 2009/10/30 11:56
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 売切れ日時を取得したい
以下のSQLで試したところやはりエラーとなってしまいました。。

SELECT
to_char(create_date, 'YYYY/MM/DD HH24:MI') as 売切れ日時
FROM
dtb_order
WHERE
order_id =
(
SELECT
MAX(order_id)
FROM
dtb_order_detail
WHERE
product_id IN
(
SELECT
product_id
FROM
dtb_products_class
WHERE
stock = 0
)
GROUP BY
product_id
)

[nativecode=ERROR: more than one row returned by a subquery used as an expression]

複数のサブクエリを使っていることに対するエラーのようです。
ん〜SQLって難しいですね。
hogehoge
投稿日時: 2009/10/30 12:14
対応状況: −−−
常連
登録日: 2008/9/19
居住地: Cusco,Peru
投稿: 67
Re: 売切れ日時を取得したい
SQLが求める結果を返しているのかまでは見てないのですが、
文法だけで言うと、

WHERE
order_id =

のところを IN にしたら通ると思いますよ。
ecbg
投稿日時: 2009/10/30 13:31
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 売切れ日時を取得したい
「IN」にしたら通りました!
「=」でも同じかと思ってたのですが難しいですねー

重ねた質問で申し訳ないのですが、
「dtb_order」には無い「product_code」を結果に表示させるには、
サブクエリからどのように渡してきたら良いのかでまた躓いてます。

お力お貸し頂けないでしょうか?
ecbg
投稿日時: 2009/10/30 14:48
対応状況: 解決済
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 売切れ日時を取得したい
普通に内部結合使ったら取得できました!
お騒がせしました!
ecbg
投稿日時: 2009/10/30 19:07
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 売切れ日時を取得したい
大筋は解決したのですが、「product_id」だけじゃなくて条件として「classcategory_id1」を
共に満たした条件の時のみ「dtb_order_detail」から価を取得したいのですが、
その際サブクエリからどのように取得したら良いのでしょうか?
なんか「dtb_order_detail」のGROUP BYもこれじゃだめっぽいんですよね・・・難しい。。

引用:

hogehogeさんは書きました:

product_id IN
 (
   SELECT
   product_id
   FROM
   dtb_products_class
   WHERE
   stock = 0
 )

で、どうでしょう?

試してないので外してたらすいません。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は93,270名です
総投稿数は111,003件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2315
5
umebius
2085
6
yuh
1841
7
h_tanaka
1752
8
red
1574
9
mcontact
1460
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.