バージョン選択
フォーラム
メニュー
オンライン状況
|
|
64 人のユーザが現在オンラインです。 (46 人のユーザが フォーラム を参照しています。) |
|
|
管理機能
投稿者 |
スレッド |
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様ありがとうございました。
|
|
|
|
統計情報
総メンバー数は88,825名です
総投稿数は109,982件です
|