バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 高度な設定でのCSV出力方法について

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nksm
投稿日時: 2014/7/31 19:04
対応状況: −−−
半人前
登録日: 2012/4/25
居住地:
投稿: 24
高度な設定でのCSV出力方法について
EC-CUBE 2.11.5
DBサーバー PostgreSQL 8.1.23
PHP 5.3.28

高度な設定にSQLを登録し、当日の受注商品一覧CSVを作成し、
各商品ごとにその商品を受注している注文番号も出力したいと考えております。

下記で該当する注文番号まで出力されているのですが、同一の商品があった場合に複数行に分かれてしまいます。
同一の商品は一行にまとめ、該当する注文番号は一つのセルにカンマ区切りで表示させたいのですが
どなたか実現方法をご教示頂けないでしょうか。

product_code as "商品コード",
p.name as "商品名",
quantity as "数量",
array_to_string(array(select order_id FROM dtb_order WHERE d.order_id = order_id AND to_char(payment_date ,'YYYY-MM-DD') = CURRENT_DATE), ' / ')
FROM
dtb_order AS o
LEFT JOIN
dtb_order_detail AS d
ON
o.order_id = d.order_id
LEFT JOIN
dtb_products AS p
ON
d.product_id = p.product_id
WHERE
to_char(o.payment_date ,'YYYY-MM-DD') = CURRENT_DATE
AND
o.del_flg = 0
ORDER BY product_code


尚、下記の様にarray_to_string、arrayを用いてみましたが上手く出力できませんでした。

product_code as "商品コード",
max(p.name) as "商品名",
sum(quantity) as "数量",
array_to_string(array(select o.order_id FROM dtb_order AS o LEFT JOIN dtb_order_detail AS d ON o.order_id = d.order_id WHERE to_char(o.payment_date ,'YYYY-MM-DD') = CURRENT_DATE), ' / ')
FROM
dtb_order AS o
LEFT JOIN
dtb_order_detail AS d
ON
o.order_id = d.order_id
LEFT JOIN
dtb_products AS p
ON
d.product_id = p.product_id
WHERE
to_char(o.payment_date ,'YYYY-MM-DD') = CURRENT_DATE
AND
o.del_flg = 0
GROUP BY product_code
ORDER BY product_code


また、MySQLを利用していた際は下記SQLの登録にて希望通りのCSVを出力できておりました。

product_code as "商品コード",
p.name as "商品名",
sum(quantity) as "数量",
GROUP_CONCAT(concat(DATE_FORMAT(o.create_date,'%y%m'),o.order_id) SEPARATOR ' / ') as "該当注文番号"
FROM
dtb_order AS o
LEFT JOIN
dtb_order_detail AS d
ON
o.order_id = d.order_id
LEFT JOIN
dtb_products AS p
ON
d.product_id = p.product_id
WHERE
o.status = 6
AND
DATE_FORMAT(o.payment_date,'%Y/%m/%d') = DATE_FORMAT(now(),'%Y/%m/%d')
AND
o.del_flg = 0
GROUP BY product_code


どなたかお知恵を頂けましたら幸いです。
yuh
投稿日時: 2014/7/31 19:17
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 高度な設定でのCSV出力方法について
ちょっと手元にPostgreSQLの環境が無いのでなんともですが、

product_code as "商品コード",
p.name as "商品名",
quantity as "数量",
array_to_string(array(select order_id FROM dtb_order WHERE d.order_id = order_id AND to_char(payment_date ,'YYYY-MM-DD') = CURRENT_DATE), ' / ')
FROM
dtb_order AS o
LEFT JOIN
dtb_order_detail AS d
ON
o.order_id = d.order_id
LEFT JOIN
dtb_products AS p
ON
d.product_id = p.product_id
WHERE
to_char(o.payment_date ,'YYYY-MM-DD') = CURRENT_DATE
AND
o.del_flg = 0
ORDER BY product_code

GROUP BYしてないっぽいですが、それが原因じゃないですか?
nksm
投稿日時: 2014/8/1 10:17
対応状況: −−−
半人前
登録日: 2012/4/25
居住地:
投稿: 24
Re: 高度な設定でのCSV出力方法について
コメントありがとうございます。
上記コードでGROUP BYを掛けてみると下記エラーが出てしまいます。

MDB2 Error: unknown error
prepare: [Error message: Unable to create prepared statement handle]
[Last executed query: SELECT sub_data FROM dtb_module WHERE module_code = $1 ]
[Native message: ERROR: subquery uses ungrouped column "d.order_id" from outer query]

SQLの知識が乏しく、見様見真似で作業している為、
何をどう修正して良いものか行き詰っている状態です。
何かお分かりになりましたら宜しくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,646名です
総投稿数は109,891件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1635
8
red
1569
9
mcontact
1265
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.