質問 > 管理機能 > 受注CSVにお届け先情報を追加したい。 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ゲスト |
投稿日時: 2013/2/1 18:23
対応状況: −−−
|
受注CSVにお届け先情報を追加したい。 お世話になります。
受注CSVにお届先情報を追加したいです。 dtb_csvに下記のように登録しました。 引用: insert into dtb_csv (no, csv_id, col, disp_name, rank, status, create_date, update_date) values (201, 3, '(select shipping_name01 from dtb_shipping where dtb_shipping.order_id = dtb_order.order_id)', 'お届け先(姓)', 20, 1, Now(), Now()) ; 同様に、お届け先(名)、お届け先(都道府県)などを登録したのですが、CSVを吐き出してみると、お届け先に関する項目が表示されず、お届け先より右の項目がズレて表示されてしまいます。 また、出力項目設定でお届け先(姓)のみ、お届け先(名)のみなど、単品でCSVを出すと正しい情報が入っています。 2つ以上一緒に出すと、情報がおかしくなってしまいます。 うまく説明できなくてすみません… ちょっとしたことでもいいので教えて頂きたいです。 [EC-CUBE] 2.11.5 [PHP] 5.1.6 [DB] PostgreSQL 8.1.23 |
|
AMUAMU |
投稿日時: 2013/2/1 19:00
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 受注CSVにお届け先情報を追加したい。 dtb_csvに足しているSQL文に対して、asで別名を付けていないのが原因では無いかと思います。
無名カラムでは、項目列の突き合わせが出来ず情報が正しく取り出せなくなります。 参考までにデフォルトのsql文で分かりやすい所を下記に抜粋します。asで項目名がついているところがポイントです。 INSERT INTO dtb_csv (no, csv_id, col, disp_name, rank, rw_flg, status, create_date, update_date, mb_convert_kana_option, size_const_type, error_check_types) VALUES (119, 3, '(SELECT name FROM mtb_pref WHERE mtb_pref.id = dtb_order.order_pref) as pref', '都道府県', 17, 2, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'n', 'INT_LEN', 'MAX_LENGTH_CHECK,NUM_CHECK');
|
ゲスト |
投稿日時: 2013/2/4 10:35
対応状況: −−−
|
Re: 受注CSVにお届け先情報を追加したい。 ありがとうございます。
別名をつけたところ、無事に取得することができました。 ただ、お届け先の都道府県を表示しようとすると、エラーが起きてしまいます。 デフォルトである、都道府県をコピーして以下のように登録してみたのですが、「CSVダウンロード」を押すとシステムエラーになってしまいます。 引用: insert into dtb_csv (no, csv_id, col, disp_name, rank, status, create_date, update_date) values (201, 3, '(SELECT name FROM mtb_pref WHERE mtb_pref.id = dtb_shipping.shipping_pref)', '届け先都道府県', 20, 2, Now(), Now()) ; デフォルトの都道府県と重複するから別名で参照しなければいけない、ということでしょうか? 具体的にどのように記述したらよいか教えていただけると助かります。 よろしくお願い致します。 |
|
AMUAMU |
投稿日時: 2013/2/4 15:27
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 受注CSVにお届け先情報を追加したい。 再び、別名を付けていないことが問題かと思います。
複数項目利用時のサブクエリ参照時は別名は必ず付ける必要があります。
|
ゲスト |
投稿日時: 2013/2/4 15:33
対応状況: −−−
|
Re: 受注CSVにお届け先情報を追加したい。 すみません。
ソースを間違えていました。 引用: insert into dtb_csv (no, csv_id, col, disp_name, rank, status, create_date, update_date) values (201, 3, '(SELECT name FROM mtb_pref WHERE mtb_pref.id = dtb_shipping.shipping_pref) as shippref', '届け先都道府県', 20, 2, Now(), Now()) ; こちらでもエラーが起きてしまいました。 引用: prepare: [Error message: Unable to create prepared statement handle] [Last executed query: SELECT no, csv_id, col, disp_name, rank, status, rw_flg, mb_convert_kana_option, size_const_type, error_check_types FROM dtb_csv WHERE status = 1 AND csv_id = $1 ORDER BY rank, no ] [Native message: ERROR: missing FROM-clause entry in subquery for table "dtb_shipping"] というエラーが出ます。 |
|
AMUAMU |
投稿日時: 2013/2/4 16:08
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 受注CSVにお届け先情報を追加したい。 dtb_shipping.shipping_pref は、どこから来ていますか?
受注CSVということですので、dtb_orderを元にdtb_shippingは参照出来ますが、dtb_shippingを元に参照するには現状のSQL文では駄目かと思います。 ○dtb_order → dtb_shipping ×dtb_shipping → 他のテーブル ○dtb_order → dtb_shipping → 他のテーブル という多重の参照を行うように修正が必要だと思います。
|
ゲスト |
投稿日時: 2013/2/4 17:03
対応状況: −−−
|
Re: 受注CSVにお届け先情報を追加したい。 ありがとうございます!
colの部分を以下のようにしたら取得出来ました。 引用: (SELECT name FROM mtb_pref JOIN dtb_shipping ON dtb_order.order_id = dtb_shipping.order_id WHERE dtb_shipping.shipping_pref = mtb_pref.id) as pref 本当に助かりました。 ありがとうございました。 |
|
ゲスト |
投稿日時: 2013/2/4 17:15
対応状況: 解決済
|
Re: 受注CSVにお届け先情報を追加したい。 対応状況を変更できなかったので再度投稿します。
|
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |