質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

2回答

2038閲覧

SQLの構文がわかりません。

kaotoka

総合スコア10

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2016/04/12 08:05

###前提
PHP、SQL。
ECCUBE2系のCSV生成。

###実現したいこと

独自項目のCSVの作成をしたい。

###発生している問題・エラーメッセージ

◆問題
電話番号が意図した結果にならない。
・いま
[CSV] a,b,c,090,e,f,g,~
・こうしたい
[CSV] a,b,c,090-9999-9999,e,f,g,~

◆エラー
MDB2 Error: syntax error
または
演算されてしまって意図した結果にならない

###該当のソースコード・試したこと

◆うまくいくSQL(エラーはないが、意図した結果ではない)
--------
SELECT
'' as foo1,
dtb_order.order_id,
'' as foo2,
'' as foo3,
(SELECT shipping_tel01 FROM A WHERE 略 = 略) as shipping_tel_all,
'' as foo5,
'' as foo6,

-
-------

◆うまくいかないSQL (値がマイナスになる。90-9999-9999の結果が返される)
--------
SELECT
'' as foo1,
dtb_order.order_id,
'' as foo2,
'' as foo3,
(SELECT shipping_tel01 FROM A WHERE 略 = 略)-
(SELECT shipping_tel02 FROM A WHERE 略 = 略)-
(SELECT shipping_tel03 FROM A WHERE 略 = 略) as shipping_tel_all,
'' as foo5,
'' as foo6,

-
-------

◆うまくいかないSQL (シンタックスエラー)
--------
SELECT
'' as foo1,
dtb_order.order_id,
'' as foo2,
'' as foo3,
(SELECT to_char(shipping_tel01) FROM A WHERE 略 = 略)-
(SELECT to_char(shipping_tel02) FROM A WHERE 略 = 略)-
(SELECT to_char(shipping_tel03) FROM A WHERE 略 = 略) as shipping_tel_all,
'' as foo5,
'' as foo6,

-
-------

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

EC-CUBEはMySQLだと思うので、文字列の結合にはconcat関数を使いましょう。
たぶん下のようにすればやりたいことはできると思います。

SQL

1SELECT CONCAT(to_char(shipping_tel01),'-',to_char(shipping_tel02),'-',to_char(shipping_tel03)) FROM A WHERE=

PHPを使っているのであれば文字列操作はSQLではなくPHPで行った方がいいとも思います。

投稿2016/04/12 08:11

編集2016/04/12 08:27
rysh

総合スコア874

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaotoka

2016/04/12 08:40

ご回答ありがとうございます! 「to_char」がなぜか通らなかったのですが、やりたいことは実現できました!!!!! 本当に助かりました。ありがとうございます!
T.Yokotani

2016/04/12 10:26

解決済みのところ、横から失礼いたします。 to_charはMySQLにはなかったような・・・ castかconvertならうまくいったかもしれません。
kaotoka

2016/04/14 07:20

T.Yokotani様 補足いただきありがとうございます! to_charはオラクルだけっぽいですね。勉強します!
guest

0

(SELECT shipping_tel01 FROM A WHERE 略 = 略)-
(SELECT shipping_tel02 FROM A WHERE 略 = 略)-
(SELECT shipping_tel03 FROM A WHERE 略 = 略) as shipping_tel_all,

これだとそれぞれのSELECTした値を引き算してしまい、結果マイナス値になっていますね。
なのでそれぞれの結果を文字列として連結する必要があります。
お使いのDBがわからないので、リンク先を参照して実装してみてください。
http://www.sql-reference.com/string/concatenate.html

投稿2016/04/12 08:16

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaotoka

2016/04/12 08:39

ご回答ありがとうございます! 参考URL、助かります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問