質問 > 管理機能 > 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
|
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の出力方法 パッと見ですが・・・ お届け先の複数指定時にプロダクト・ジョインが発生したりしませんかね?
|
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を参照する必要があると思います。
|
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の場合、別名部分を""で囲って表記することで抑制出来たと思います。
|
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 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |