通販サイトの作成ログ

通販サイトでいじったメモログみたいなものだとお考えください。
質問もどうぞ。わかる範囲内でしたらお答えします。

仕事

ECCUBE→高度な設定のSQL追加

以下の構文で携帯メールかPCメールかの判定ができる
ドメインはどっかで拾ってきた
下の範囲指定の[数字1]に下限、[数字2]に上限を設定で注文番号の範囲指定ができます。

--------------------------------------------------------------------------------------
CASE WHEN o.order_email like '%docomo.ne.jp%'
       OR o.order_email like '%mopera.net%'
       OR o.order_email like '%softbank.ne.jp%'
       OR o.order_email like '%vodafone.ne.jp%'
       OR o.order_email like '%disney.ne.jp%'
       OR o.order_email like '%i.softbank.jp%'
       OR o.order_email like '%ezweb.ne.jp%'
       OR o.order_email like '%uqmobile.jp%'
       OR o.order_email like '%ido.ne.jp%'
       OR o.order_email like '%emnet.ne.jp%'
       OR o.order_email like '%emobile.ne.jp%'
       OR o.order_email like '%emobile-s.ne.jp%'
       OR o.order_email like '%ymobile1.ne.jp%'
       OR o.order_email like '%ymobile.ne.jp%'
       OR o.order_email like '%yahoo.ne.jp%'
       OR o.order_email like '%pdx.ne.jp%'
       OR o.order_email like '%willcom.com%'
       OR o.order_email like '%wcm.ne.jp%'
       OR o.order_email like '%y-mobile.ne.jp%' THEN '携帯'
     ELSE 'PC'
     END as "PCor携帯"

FROM
dtb_order AS o

-----範囲指定箇所はここになります-----
WHERE
o.order_id >= [数字1]
AND
o.order_id <= [数字2]
--------------------------------------

ECCUBE→高度な設定のSQL(バージョンアップ)説明付

色々いじって最終的にこうなった。
ECCUBEのSQLは現在PostgreSQL 9.3.11となっているためこれに対応
住所1と住所2はマクロでの比較用
こちらとしては郵便番号対応の住所1と対応範囲外の住所2に分けたほうがいいので
下に説明なしがありますので使用する際はそちらをご利用ください
またECCUBE→高度な設定において最初のSELECTが省略されています。
他の場所で使う場合はSELECTを記入になります。
SELECT部分のas "***",の***は列の項目名になります。

--------------------------------------------------------------------------------------


REPLACE(substring(CAST(o.create_date AS varchar) from 1 for 10),'-','/') as "受付日",
→購入日時を文字列にキャストして1文字目から10文字取り出し'-'を'/'に置換
concat(o.order_name01 , ' ' , o.order_name02) as "氏名",
→購入者の苗字と名前を結合
concat(o.order_kana01 , ' ' , o.order_kana02) as "氏名カナ",
→購入者のカナの苗字と名前を結合
CASE o.order_sex WHEN '1' THEN '男' WHEN '2' THEN '女' END as "性別",
→パターン分岐、1の時'男'2の時'女'
concat(o.order_tel01 , '-' , o.order_tel02 , '-' , o.order_tel03) as "電話番号",
→購入者の電話番号を'-'つなぎで結合
REPLACE(substring(CAST(o.order_birth AS varchar) from 1 for 10),'-','/') as "生年月日",
→購入者の誕生日より1文字目から10文字取り出し'-'を'/'に置換
concat(o.order_zip01 , '-' , o.order_zip02) as "郵便番号",
→購入者の郵便番号を'-'つなぎで結合
concat(z1.state,z1.city,z1.town) as "住所1",
→購入者の住所を結合表記(郵便番号検索からわかる分)
concat(p1.name,o.order_addr01,o.order_addr02) as "住所2",
→購入者の住所を結合表記(そのまんま)
substring(CAST(o.create_date AS varchar) from 12 for 5) as "時間帯",
→購入日時を文字列にキャストして12文字目から5文字取り出し
o.deliv_fee as "送料",
→送料
o.payment_method as "支払方法",
→支払方法
s.shipping_time as "配送時間帯",
→配送時間帯
'' as "配送",
→空白列
REPLACE(substring(CAST(s.shipping_date AS varchar) from 1 for 10),'-','/') as "配送指定日",
→配送指定日を文字列にキャストして1文字目から10文字取り出し'-'を'/'に置換
concat(o.customer_id , ' ' , o.payment_method) as "備考",
→備考欄として会員ID' '支払い方法を結合して記入
d.quantity as "商品数",
→商品数
concat(s.shipping_name01 , ' ' , s.shipping_name02) as "配送先名",
→配送先の苗字と名前を結合
concat(s.shipping_kana01 , ' ' , s.shipping_kana02) as "配送先名フリガナ",
→配送先のカナの苗字と名前を結合
concat(s.shipping_tel01 , '-' , s.shipping_tel02 , '-' , shipping_tel03) as "配送先電話番号",
→配送先の電話番号を'-'つなぎで結合
concat(s.shipping_zip01 , '-' , s.shipping_zip02) as "配送先郵便番号",
→配送先の郵便番号を'-'つなぎで結合
concat(z2.state,z2.city,z2.town) as "配送先住所1",
→配送先の住所を結合表記(郵便番号検索からわかる分)
concat(p2.name,s.shipping_addr01,s.shipping_addr02) as "配送先住所2",
→配送先の住所を結合表記(そのまんま)
o.order_id as "注文番号",
→注文番号
d.product_name as "商品名"
→商品名

FROM
→どこのデータベースを使うかの宣言
dtb_order AS o
→dtb_order(注文者テーブル)を'o'としてベースにする
LEFT JOIN dtb_order_detail AS d ON o.order_id = d.order_id
→dtb_order_detail(購入情報テーブル)を'd'としてくっつける。その際の条件はdtb_orderのorder_idとdtb_order_detailのorder_idを同じにする
LEFT JOIN dtb_shipping AS s ON o.order_id = s.order_id
→dtb_shipping(買い物テーブル)を's'としてくっつける。その際の条件はdtb_orderのorder_idとdtb_shippingのorder_idを同じにする
LEFT JOIN mtb_pref AS p1 ON p1.id = o.order_pref
→p1のテーブルをmtb_pref(県名テーブル)とし、p1のIDを購入者のpref(県名番号)と同じにする
LEFT JOIN mtb_pref AS p2 ON p2.id = s.shipping_pref
→p2のテーブルをmtb_pref(県名テーブル)とし、p3のIDを配送先のpref(県名番号)と同じにする
LEFT JOIN mtb_zip AS z1 ON z1.zipcode = concat(o.order_zip01 , o.order_zip02)
→mtb_zip(郵便情報テーブル)をz1とし、z1のzipcodeを注文者の(7桁に結合した)郵便番号と同じにする
LEFT JOIN mtb_zip AS z2 ON z2.zipcode = concat(s.shipping_zip01 , s.shipping_zip02)
→mtb_zip(郵便情報テーブル)をz2とし、z2のzipcodeを配送先の(7桁に結合した)郵便番号と同じにする

WHERE
→条件の宣言?
o.order_id >= 7780
→注文番号が7780以上

ORDER BY
→ソートを掛ける際の宣言
o.order_id
→注文情報の列を選択。昇順させる

--------------------------------------------------------------------------------------

まあここからマクロで調整になるんですけどね

以下説明なし版



--------------------------------------------------------------------------------------
REPLACE(substring(CAST(o.create_date AS varchar) from 1 for 10),'-','/') as "受付日",
concat(o.order_name01 , ' ' , o.order_name02) as "氏名",
concat(o.order_kana01 , ' ' , o.order_kana02) as "氏名カナ",
CASE o.order_sex WHEN '1' THEN '男' WHEN '2' THEN '女' END as "性別",
concat(o.order_tel01 , '-' , o.order_tel02 , '-' , o.order_tel03) as "電話番号",
REPLACE(substring(CAST(o.order_birth AS varchar) from 1 for 10),'-','/') as "生年月日",
concat(o.order_zip01 , '-' , o.order_zip02) as "郵便番号",
concat(z1.state,z1.city,z1.town) as "住所1",
concat(p1.name,o.order_addr01,o.order_addr02) as "住所2",
substring(CAST(o.create_date AS varchar) from 12 for 5) as "時間帯",
o.deliv_fee as "送料",
o.payment_method as "支払方法",
s.shipping_time as "配送時間帯",
'' as "配送",
REPLACE(substring(CAST(s.shipping_date AS varchar) from 1 for 10),'-','/') as "配送指定日",
concat(o.customer_id , ' ' , o.payment_method) as "備考",
d.quantity as "商品数",
concat(s.shipping_name01 , ' ' , s.shipping_name02) as "配送先名",
concat(s.shipping_kana01 , ' ' , s.shipping_kana02) as "配送先名フリガナ",
concat(s.shipping_tel01 , '-' , s.shipping_tel02 , '-' , shipping_tel03) as "配送先電話番号",
concat(s.shipping_zip01 , '-' , s.shipping_zip02) as "配送先郵便番号",
concat(z2.state,z2.city,z2.town) as "配送先住所1",
concat(p2.name,s.shipping_addr01,s.shipping_addr02) as "配送先住所2",
o.order_id as "注文番号",
d.product_name 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 mtb_zip AS z1 ON z1.zipcode = concat(o.order_zip01 , o.order_zip02)
LEFT JOIN mtb_zip AS z2 ON z2.zipcode = concat(s.shipping_zip01 , s.shipping_zip02)
WHERE
o.order_id >= 7780
ORDER BY
o.order_id

ECCUBE→高度な設定

SQLはじめて試行錯誤でこうなった。

--------------------------------------------------------------------------------------

dtb_shipping.create_date as "受付日",
concat(dtb_order.order_name01 , ' ' , dtb_order.order_name02) as "注文者氏名",
concat(dtb_order.order_kana01 , ' ' , dtb_order.order_kana02) as "注文者注文者カナ",
dtb_order.order_sex as "注文者性別",
concat(dtb_order.order_tel01 , '-' , dtb_order.order_tel02 , '-' , dtb_order.order_tel03) as "注文者電話番号",
dtb_order.order_birth as "注文者生年月日",
concat(dtb_order.order_zip01 , '-' , dtb_order.order_zip02) as "注文者郵便番号",
concat(dtb_order.order_pref,dtb_order.order_addr01) as "注文者住所1",
dtb_order.order_addr02 as "注文者住所2",
dtb_order.deliv_fee as "送料",
dtb_order.payment_method as "支払方法",
dtb_order_detail.quantity as "商品数",
concat(dtb_shipping.shipping_name01 , ' ' , dtb_shipping.shipping_name02) as "配送先名",
concat(dtb_shipping.shipping_kana01 , ' ' , dtb_shipping.shipping_kana02) as "配送先名フリガナ",
concat(dtb_shipping.shipping_tel01 , '-' , dtb_shipping.shipping_tel02 , '-' , shipping_tel03) as "配送先電話番号",
concat(dtb_shipping.shipping_zip01 , '-' , dtb_shipping.shipping_zip02) as "配送先郵便番号",
concat(dtb_shipping.shipping_pref,dtb_shipping.shipping_addr01) as "配送先住所1",
dtb_shipping.shipping_addr02 as "配送先住所2",
dtb_order_detail.product_name as "商品名"

FROM
dtb_shipping,dtb_order,dtb_order_detail

WHERE
dtb_order.order_id=dtb_shipping.order_id
AND
dtb_order.order_id=dtb_order_detail.order_id

--------------------------------------------------------------------------------------

一応これで注文者情報と配送先の情報と注文内容が把握できるかな

accessが難しい

VBA初挑戦になるがデータベースがフォームで表示されない・・・((=・ω・=))

年月を選択して該当する売上を出すフォームを試しで作ろうとしたが難しい・・・

データをクエリに変換してつなげるとこまで出来たが連動できない((=;ω;=))

仕事開始&ECcube中心に変わりました

よりPHP寄りになりました^^
最新コメント
記事検索