バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 高度な設定SQL吐き出しについて

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ndamon
投稿日時: 2015/7/30 17:58
対応状況: −−−
半人前
登録日: 2013/11/29
居住地:
投稿: 21
高度な設定SQL吐き出しについて
-------------------------------------------------------------
[EC-CUBE] 2.13.3
[レンタルサーバ] さくらVPS
[PHP] 5.3.3
[データベース] MySQL 5.1.73
[WEBサーバ] Apache
-------------------------------------------------------------
お世話になります。

現在、高度な設定より下記コードにてCSVの吐き出しを行っております。

payment_method as "支払い方法",
charge as "手数料",
order_zip01 as "郵便番号1",
order_zip02 as "郵便番号2",
order_tel01 as "電話番号1",
order_tel02 as "電話番号2",
order_tel03 as "電話番号3",
p1.name as "都道府県",
order_addr01 as "住所1",
order_addr02 as "住所2",
order_name01 as "顧客名1",
order_name02 as "顧客名2",
shipping_zip01 as "お届け先郵便番号1",
shipping_zip02 as "お届け先郵便番号2",
shipping_tel01 as "お届け先電話番号1",
shipping_tel02 as "お届け先電話番号2",
shipping_tel03 as "お届け電話番号3",
p2.name as "お届け先都道府県",
shipping_addr01 as "お届け先住所1",
shipping_addr02 as "お届け先住所2",
shipping_name01 as "お届け先名前1",
shipping_name02 as "お届け先名前2",
shipping_date as "お届け配送日",
shipping_time as "お届け時間",
o.order_id as "注文番号",
subtotal as "小計",
discount as "値引き",
total as "合計",
use_point as "使用ポイント",
payment_total as "お支払い金額",
product_id as "商品ID",
product_code as "商品コード",
CONCAT( product_name, IFNULL(classcategory_name1, ''), IFNULL(classcategory_name2, '') ) AS '商品名',
classcategory_name1 as "規格1",
classcategory_name2 as "規格2",
price as "単価",
quantity as "数量",
ROUND(d.price * 1.08) as "税込み価格",
ROUND(d.price * 1.08 * quantity) 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 p1
ON
p1.id = o.order_pref
LEFT JOIN
mtb_pref AS p2
ON
p2.id = s.shipping_pref
LEFT JOIN
dtb_customer AS c
ON
o.customer_id = c.customer_id
WHERE
o.del_flg = 0
AND o.order_id BETWEEN 2 AND 2


この度、商品情報に「常温商品、冷蔵便商品、冷凍便商品」のフラグを追加設定しました。
dtb_productsにcool_flgを追加
登録周り


<select name="cool_flg">
<option value="0" <!--{if $arrForm.cool_flg == 0}-->selected<!--{/if}-->>常温便</option>
<option value="1" <!--{if $arrForm.cool_flg == 1}-->selected<!--{/if}-->>冷蔵便</option>
<option value="2" <!--{if $arrForm.cool_flg == 2}-->selected<!--{/if}-->>冷凍便</option>
</select>


上記SQLに注文商品のクール便フラグ取得を追加したい(可能であれば商品小計の次にクール便フラグを追加したい)のですが、
SQLをあまり理解しておらず複雑なものだと全く分からない状態です。
クール便の取得だけなら下記のような感じなのでしょうが・・・


dtb_products.cool_flg as "クール便フラグ"
FROM
dtb_order_detail,dtb_products
WHERE
dtb_order_detail.product_id = dtb_products.product_id


お手数ではございますが、ご存知の方いらっしゃいましたら
ご教示くださいますよう、何卒よろしくお願いいたします。
yuh
投稿日時: 2015/7/30 23:01
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 高度な設定SQL吐き出しについて

(SELECT
cool_flg 
FROM
dtb_products
WHERE
product_id = dtb_order_detail.product_id  
) as 'クール便フラグ'

こんな感じですか?
ndamon
投稿日時: 2015/7/31 13:30
対応状況: −−−
半人前
登録日: 2013/11/29
居住地:
投稿: 21
Re: 高度な設定SQL吐き出しについて
yuh様

ご返信くださりありがとうございます。
SELECTで副問い合わせ?を入れてみましたが、エラーが出ておりました。

結合を行えばいいというのが分かり、下記コードに編集してみましたが
[Native message: Column 'product_id' in field list is ambiguous]のエラーが発生しております。
product_id as "商品ID"の項目が複数あるから特定できないといった内容らしく、
product_id as "商品ID"の行を削除するとエラーはない状態でした。

どのように修正を行えばいいかご存知の方いらっしゃいましたら
ご教示くださいますよう、よろしくお願いいたします。


SELECT payment_method as "支払い方法",
charge as "手数料",
order_zip01 as "郵便番号1",
order_zip02 as "郵便番号2",
order_tel01 as "電話番号1",
order_tel02 as "電話番号2",
order_tel03 as "電話番号3",
p1.name as "都道府県",
order_addr01 as "住所1",
order_addr02 as "住所2",
order_name01 as "顧客名1",
order_name02 as "顧客名2",
shipping_zip01 as "お届け先郵便番号1",
shipping_zip02 as "お届け先郵便番号2",
shipping_tel01 as "お届け先電話番号1",
shipping_tel02 as "お届け先電話番号2",
shipping_tel03 as "お届け電話番号3",
p2.name as "お届け先都道府県",
shipping_addr01 as "お届け先住所1",
shipping_addr02 as "お届け先住所2",
shipping_name01 as "お届け先名前1",
shipping_name02 as "お届け先名前2",
shipping_date as "お届け配送日",
shipping_time as "お届け時間",
o.order_id as "注文番号",
subtotal as "小計",
discount as "値引き",
total as "合計",
use_point as "使用ポイント",
payment_total as "お支払い金額",
product_id as "商品ID",
product_code as "商品コード",
CONCAT( product_name, IFNULL(classcategory_name1, ''), IFNULL(classcategory_name2, '') ) AS '商品名',
classcategory_name1 as "規格1",
classcategory_name2 as "規格2",
price as "単価",
quantity as "数量",
ROUND(d.price * 1.08) as "税込み価格",
ROUND(d.price * 1.08 * quantity) as "商品小計",
cool_flg 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 p1
ON
p1.id = o.order_pref
LEFT JOIN
mtb_pref AS p2
ON
p2.id = s.shipping_pref
LEFT JOIN
dtb_customer AS c
ON
o.customer_id = c.customer_id
LEFT JOIN
dtb_products AS p
ON
d.product_id = p.product_id
WHERE
o.del_flg = 0
AND o.order_id BETWEEN 1 AND 2
tsuji
投稿日時: 2015/7/31 14:06
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 958
Re: 高度な設定SQL吐き出しについて
ndamon 様

横から失礼します。

> [Native message: Column 'product_id' in field list is ambiguous]のエラーが発生しております。

product_idがfrom句のどのテーブルのから取得しているかを指定する必要があります。

下記となっているので
dtb_order_detail AS d
dtb_products AS p

dtb_order_detailから取得するときはd.product_id
dtb_productsから取得するときはp.product_id

のようにすることになります。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

ndamon
投稿日時: 2015/7/31 16:29
対応状況: 解決済
半人前
登録日: 2013/11/29
居住地:
投稿: 21
Re: 高度な設定SQL吐き出しについて
tsuji様

ご回答頂き、ありがとうございます。

p.products_idに変更することで取得が可能となりました。

yuh様、tsuji様ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
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.