質問 > 管理機能 > 受注データ CSV お届け先 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
dondon |
投稿日時: 2015/1/15 15:46
対応状況: −−−
|
一人前 登録日: 2012/2/23 居住地: 投稿: 136 |
受注データ CSV お届け先 仕様
PHP Version 5.3.3 MYSQL EC-CUBE 2.11.4 受注データをCSV出力する様にSQLを作ったのですが、 配送先住所の部分 concat(p.name,shipping_addr01,shipping_addr02) as "配送先住所", p.nameは配送先ではなく、注文者住所の都道府県ですよね。 私なりに調べて mtb_pref 等に変更してみたのですが、SQL構文エラーになってしまいます。 どの様にすれば配送先の都道府県を指定できますか? |
IPLOGIC |
投稿日時: 2015/1/15 19:03
対応状況: −−−
|
一人前 登録日: 2014/12/8 居住地: 東京都 投稿: 96 |
Re: 受注データ CSV お届け先 dondon 様
受注CSVで配送先住所を取得したいということでよろしいでしょうか? 受注CSVはdtb_orderから取得されています。 配送先住所はdtb_shippingに登録されているので、受注CSVでダウンロード出来るようにするためにはdtb_shippingをleft joinなどして繋げる必要があります。 しかし、インデックスを貼らずにleft joinしてしまいますとレコードが数千件になったときSQLの応答が1分以上かかることがあります。 また、EC-CUBE側のPHPにもカスタマイズが必要になります。 以下一例ですが、配送先住所を取得するSQLです。 SELECT CONCAT((SELECT name FROM mtb_pref WHERE mtb_pref.id = dtb_shipping.shipping_pref), dtb_shipping.shipping_addr01, dtb_shipping.shipping_addr02 ) as deliv_addr from dtb_order left join dtb_shipping on dtb_order.order_id = dtb_shipping.order_id;
|
yuh |
投稿日時: 2015/1/16 0:38
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: 受注データ CSV お届け先 配送先ごとに送る商品も関連付けするのであればdtb_shipment_itemもJOINする必要がありますよー。
|
dondon |
投稿日時: 2015/1/16 14:08
対応状況: −−−
|
一人前 登録日: 2012/2/23 居住地: 投稿: 136 |
Re: 受注データ CSV お届け先 皆様、ご指導ありがとうございます。
今現在下記で、「お届け先の都道府県が注文者の都道府県になってしまう」以外は正常に動いております。 下記をどの様に変えればお届け先の都道府県を読み込めますでしょうか。 ご教授頂けたら幸いです。 o.order_id as "オーダー番号", o.create_date as "受注日", product_code as "商品コード", CONCAT( product_name, IFNULL(classcategory_name1, ''), IFNULL(classcategory_name2, '') ) AS '商品名', quantity as "数量", price as "価格", deliv_fee as "送料", charge as "手数料", total as "合計金額", shipping_date as "配送日", concat(shipping_name01, shipping_name02) as "宛名", o.message as "メモ欄", shipping_time as "配送時間", payment_method as "決済方法", concat(shipping_zip01,shipping_zip02) as "配送先郵便番号", concat(p.name,shipping_addr01,shipping_addr02) as "配送先住所", concat(shipping_tel01,shipping_tel02,shipping_tel03) as "電話番号", o.order_email AS "メールアドレス" FROM dtb_order AS o LEFT JOIN dtb_order_detail AS d ON o.order_id = d.order_id LEFT JOIN dtb_shipping AS s ON o.order_id = s.order_id LEFT JOIN mtb_pref AS p ON p.id = o.order_pref LEFT JOIN dtb_customer AS c ON o.customer_id = c.customer_id WHERE o.status = 1 AND o.del_flg = 0 AND NOT EXISTS (SELECT * FROM dtb_shipment_item AS si WHERE s.order_id = si.order_id AND s.shipping_id = si.shipping_id) ORDER BY o.order_id引用:
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |