バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > ec-cube2.11.1でのヤマトb2用のcsvの出力方法

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
fireworks
投稿日時: 2011/7/12 14:36
対応状況: −−−
常連
登録日: 2011/7/12
居住地:
投稿: 38
ec-cube2.11.1でのヤマトb2用のcsvの出力方法
初投稿です。よろしくお願いいたします。

題名の通りです。

過去ログを参考に

----------------------------------
order_id as "オーダー番号",
update_date as "受注日",
concat(order_name01,order_name02) as "注文者名",
product_name as "商品名",
price as "価格",
payment_method as "決済方法",
concat(deliv_name01, deliv_name02) as "宛名",
concat(deliv_kana01,deliv_kana02) as "宛名フリガナ",
concat(deliv_tel01,deliv_tel02,deliv_tel03) as "電話番号",
concat(deliv_zip01,deliv_zip02) as "配送先郵便番号",
concat(mtb_pref.pref_name,deliv_addr01,deliv_addr02) as "配送先住所",
deliv_date as "配送日",
deliv_time as "配送時間",
note as "メモ欄"
FROM
mtb_pref , dtb_order join dtb_order_detail using(order_id)
WHERE
dtb_order.deliv_pref=mtb_pref.pref_id AND dtb_order.status = 6
-------------------------------

のように、
高度な設定の欄に入力して、
登録してもエラーが出力されます。

deliv_name01などがdbの方にないというエラーだと思います。

↓エラー
-----------------------------------
MDB2 Error: no such field
_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE mdb2_statement_mysql_3050f059eb9e89bbd7ea0dbc5d45a98f02cfb1a8d FROM 'SELECT order_id as \"オーダー番号\", update_date as \"受注日\", concat(order_name01,order_name02) as \"注文者名\", product_name as \"商品名\", price as \"価格\", payment_method as \"決済方法\", concat(deliv_name01, deliv_name02) as \"宛名\", concat(deliv_kana01,deliv_kana02) as \"宛名フリガナ\", concat(deliv_tel01,deliv_tel02,deliv_tel03) as \"電話番号\", concat(deliv_zip01,deliv_zip02) as \"配送先郵便番号\", concat(mtb_pref.pref_name,deliv_addr01,deliv_addr02) as \"配送先住所\", deliv_date as \"配送日\", deliv_time as \"配送時間\", note as \"メモ欄\" FROM mtb_pref , dtb_order join dtb_order_detail using(order_id) WHERE dtb_order.deliv_pref=mtb_pref.pref_id AND dtb_order.status = 6 ']
[Native code: 1054]
[Native message: Unknown column 'deliv_name01' in 'field list']
-----------------------------------


おそらくバージョンの違いからによるものだと思いますが、
下記環境でやっております。


2.11.1
PHPバージョン PHP 5.2.14
DBバージョン MySQL 5.0.90-log



phpmyadminはログインできます。
dbがあまり詳しくなく、ご教授いただければ幸いです。
AMUAMU
投稿日時: 2011/7/12 17:36
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
2.11系では配送先情報はdtb_shippingに移動していて、dtb_orderのdeliv_xxx系情報は格納先が変わっています。
そのため2.4系のSQLそのままでは動作しない事が多々あります。

下記にあるテーブル定義書を確認されて、必要な情報を取り出せるように修正することが必要かと思います。
http://svn.ec-cube.net/open_trac/browser/branches/version-2_11/docs


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

fireworks
投稿日時: 2011/7/12 17:54
対応状況: −−−
常連
登録日: 2011/7/12
居住地:
投稿: 38
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
ご返信ありがとうございます。

2.11の場合の具体的なcsv出力のsqlの記述の方法などを記載されているサイト等はご存じないでしょうか。。

いただいた定義書もみかたがよくわからず・・・
fireworks
投稿日時: 2011/7/13 1:39
対応状況: −−−
常連
登録日: 2011/7/12
居住地:
投稿: 38
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
何とかできました。。。。


dtb_order.order_id as "オーダー番号",
dtb_order.update_date as "受注日",
concat(order_name01,order_name02) as "注文者名",
product_name as "商品名",
price as "価格",
payment_method as "決済方法",
concat(shipping_name01, shipping_name02) as "宛名",
concat(shipping_kana01,shipping_kana02) as "宛名フリガナ",
concat(shipping_tel01,shipping_tel02,shipping_tel03) as "電話番号",
concat(shipping_zip01,shipping_zip02) as "配送先郵便番号",
concat(mtb_pref.name,shipping_addr01,shipping_addr02) as "配送先住所",
shipping_date as "配送日",
shipping_time as "配送時間",
note as "メモ欄"
FROM
mtb_pref , dtb_order JOIN dtb_shipping JOIN dtb_order_detail
ON
dtb_order.order_id=dtb_shipping.order_id=dtb_order_detail.order_id
WHERE
dtb_order.order_pref=mtb_pref.id AND dtb_order.status = 8


あとは、項目の加工ができれば。。。
seasoft
投稿日時: 2011/7/13 1:51
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
パッと見ですが・・・ お届け先の複数指定時にプロダクト・ジョインが発生したりしませんかね?


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

AMUAMU
投稿日時: 2011/7/13 9:01
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
発生しそうですね。

dtb_shippingは複数お届け先指定時に、同一注文IDで複数行の情報が作成されます。

dtb_order_detailのproduct_class_idとorder_idを元に、dtb_shippingを参照する必要があると思います。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

den
投稿日時: 2011/7/13 12:17
対応状況: −−−
半人前
登録日: 2011/7/13
居住地:
投稿: 12
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
初めまして。初参加なのですが、この流れでついでに聞きたい事があったので返信しました。あまりこういうコミュニティに参加した事がないのでマナー等、失礼な部分があったらすいません。指摘してください。

バージョン2.11.1からお届け先が複数になりテーブルもさらに複数に分かれた事でSQLが複雑になってきそうな感じですよね。

僕もこのcsvに関しては考えている感じなのですが、その時にもう一つ気になったところがあったのですが、as指定で別名を日本語でつけた時に、注文IDなどのように英語が含まれている部分が出力すると注文idのように小文字になってしまいます。

ヘッダ行だけなのでテキストエディタで修正などは出来るのですが、これってシステムで直す事は出来ないんでしょうか?
なにか良い意見があったら聞きたいです。

よろしくお願いします。
AMUAMU
投稿日時: 2011/7/13 18:16
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
PostgreSQLの場合、別名部分を""で囲って表記することで抑制出来たと思います。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

den
投稿日時: 2011/7/13 20:03
対応状況: −−−
半人前
登録日: 2011/7/13
居住地:
投稿: 12
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
回答、ありがとうございます。

でもMySQLでの話なのです…。
MySQLでは念のため別名部分を""で囲って表記してみた事もあるのですが、うまくいかなかったのです…。

引き続き、なにか有力な情報があればよろしくお願いします!
den
投稿日時: 2011/7/13 22:30
対応状況: −−−
半人前
登録日: 2011/7/13
居住地:
投稿: 12
Re: ec-cube2.11.1でのヤマトb2用のcsvの出力方法
ご意見を元に僕もSQLを書いてみました。しかし少し自信がありません。

o.order_id AS "オーダー番号",
o.update_date AS "受注日",
CONCAT(order_name01," ",order_name02) AS "注文者名",
od.product_name AS "商品名",
od.price AS "価格",
payment_method AS "支払方法",
CONCAT(shipping_name01," ",shipping_name02) AS "宛名",
CONCAT(shipping_kana01," ",shipping_kana02) AS "宛名カナ",
CONCAT(shipping_tel01,"-",shipping_tel02,"-",shipping_tel03) as "電話番号",
CONCAT(shipping_zip01,"-",shipping_zip02) as "配送先郵便番号",
(CONCAT((SELECT name FROM mtb_pref WHERE sp.shipping_pref = mtb_pref.id),shipping_addr01,shipping_addr02)) AS "配送先住所",
shipping_date AS "配送日",
shipping_time AS "配送時間",
note AS "メモ欄"
FROM
dtb_order AS o
JOIN
dtb_order_detail AS od
USING
(order_id)
LEFT JOIN
dtb_shipment_item AS si
ON
od.order_id = si.order_id AND
od.product_class_id = si.product_class_id
LEFT JOIN
dtb_shipping AS sp
ON
(si.order_id = sp.order_id AND si.shipping_id = sp.shipping_id)
OR
(o.order_id = sp.order_id AND si.shipping_id IS NULL)
WHERE
o.status = 1 AND o.del_flg = 0

上記SQLはいくつか前提条件としている部分があるのですが、それが正しいかどうかがわからないのですが、以下の条件はあっているでしょうか?

dtb_shipment_itemは、dtb_order_detailのorder_idとproduct_class_idが一致すればdtb_order_detailの対象が求まる。

複数お届け先でない場合、dtb_shipment_itemは生成されないので、dtb_shippingは必ず1つになり、dtb_orderとdtb_shippingのorder_idが一致するものが同一になる。(shipping_idは無視できる)

という感じです。

ちなみにdtb_shipping_itemには商品名などが入ってますが、dtb_order_detailと一致すれば商品名がわかるはずなので、このテーブルに商品名が入っている必要があるのか疑問だったのですが、どうなのでしょうか? 個人的には数量だけあればいいような気がしましたが、さほど詳しいわけではないので、なにか見落としているのかもしれませんが…。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,249名です
総投稿数は110,348件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1688
8
red
1571
9
mcontact
1357
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.