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

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

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

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

PHP

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

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

解決済

SQL 単体では実行できるが組み合わせるとエラーが出る

ta_ku0419
ta_ku0419

総合スコア13

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

PHP

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

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

2回答

0評価

0クリップ

17674閲覧

投稿2018/07/09 05:07

編集2018/07/09 05:32

環境

PHP MVCモデル
フレームワーク CodeIgniter
DB Oracle

やっていること

あるテーブルの二つの値を用いて新しくレコードを作成している。
OSqlEditで実行すると正常に値が取得される。
PHPで元々実装されているSQLに組み込むとエラーが出る。

既にSELECTで指定されている最後の項目の後に[,]は入れています。

元々実装されているSQLはPHPでは実行できますが、OSqlEditで実行すると
「\」が「¥」に置き換えられ「式がありません」のエラーが出ます。


元々実装されているSQL

SQL

SELECT MF_SISAKU_MAIN.SISKKNR_NO, MF_SISAKU_MAIN.TNT_CD, MF_SISAKU_MAIN.PAYMENT_CD, MF_SISAKU_MAIN.PAYMENT_TYPE,MF_SISAKU_MAIN.HSYCAL_KBN, MF_SISAKU_MAIN.HYKSIHYO_KBN,MF_SISAKU_MAIN.TNTBSY_CD, MF_SISAKU_MAIN.KOSIN_TIM, MF_SISAKU_MAIN.SISKDAT_SBT, MF_SISAKU_MAIN.PRIVATE_FLG, MF_SISAKU_MAIN.PAYAPLY_STAT,MF_SISAKU_MAIN.SISKAPLY_STAT,MF_SISAKU_MAIN.SIMU_STAT, HYKFROM_YM, HYKTO_YM, TKUISK_KNM, SISK_ID, SISK_KNM, HINGRP_KNM, HSY_KIN, PLN_KIN, JGN_KIN, SSKRYK_KNM, KNZSMEI_SEI_KNM, KNZSMEI_MEI_KNM,SISKJTI_KBN, SISKPTN_KBN, SISKOPE_STAT, TRKSAPLY_STAT, CATE_JTI.KNM AS CATE_JTI_KNM, CATE_SBT.KNM AS CATE_SBT_KNM, PAY.PAYMENT_KNM,SIMU_SBT.KNM AS SIMU_SBT_KNM,MKH_SBT.KNM AS MKH_SBT_KNM,CASE WHEN HYKTO_YM IS NOT NULL THEN TO_CHAR(ADD_MONTHS(SUBSTR(HYKTO_YM, 1, 4) || \'/\' || SUBSTR(HYKTO_YM, 5, 2) || \'/01\', 1), \'YYYYMM\') END AS HYKTO_NXT_YM, FROM (SELECT MF_SISAKU.*, EGT0000P.EGT0102S(SISKKNR_NO, \'O\') || 01 AS SISKKIJUN_YMD FROM MF_SISAKU) MF_SISAKU_MAIN LEFT OUTER JOIN VW_TKUISK ON MF_SISAKU_MAIN.HYKHOJIN_CD = VW_TKUISK.TKUISK_CD AND SISKKIJUN_YMD BETWEEN VW_TKUISK.YUKOFROM_YMD AND VW_TKUISK.YUKOTO_YMD LEFT OUTER JOIN MF_SISKHINGRP ON MF_SISAKU_MAIN.SISKKNR_NO = MF_SISKHINGRP.SISKKNR_NO AND SISK_SEQ = 1 AND HYKHSY_KBN = 1 AND HYOJI_SEQ = 1 LEFT OUTER JOIN MF_HINGRP ON MF_HINGRP.HINGRP_CD = MF_SISKHINGRP.HINGRP_CD AND SISKKIJUN_YMD BETWEEN MF_HINGRP.YUKOFROM_YMD AND MF_HINGRP.YUKOTO_YMD LEFT OUTER JOIN VW_NEWSSK ON MF_SISAKU_MAIN.TNTBSY_CD = VW_NEWSSK.SSK_CD AND SISKKIJUN_YMD BETWEEN VW_NEWSSK.YUKOFROM_YMD AND VW_NEWSSK.YUKOTO_YMD LEFT OUTER JOIN VW_KZNKHN ON MF_SISAKU_MAIN.TNT_CD = VW_KZNKHN.KZN_CD AND SISKKIJUN_YMD BETWEEN VW_KZNKHN.YUKOFROM_YMD AND VW_KZNKHN.YUKOTO_YMD LEFT OUTER JOIN MF_CATEGORY CATE_JTI ON MF_SISAKU_MAIN.SISKJTI_KBN = CATE_JTI.KBN AND CATE_JTI.CTGRSBT_KBN = \'SISKJTI\' LEFT OUTER JOIN MF_CATEGORY CATE_SBT ON MF_SISAKU_MAIN.SISKSBT_CD = CATE_SBT.KBN AND CATE_SBT.CTGRSBT_KBN = \'SISKSBT\' LEFT OUTER JOIN MF_CATEGORY SIMU_SBT ON MF_SISAKU_MAIN.SIMU_STAT = SIMU_SBT.KBN AND SIMU_SBT.CTGRSBT_KBN = \'SIMUST\' LEFT OUTER JOIN MF_CATEGORY MKH_SBT ON MF_SISAKU_MAIN.MKH_STAT = MKH_SBT.KBN AND MKH_SBT.CTGRSBT_KBN = \'MKHOST\' LEFT OUTER JOIN VW_PAYMENT PAY ON MF_SISAKU_MAIN.PAYMENT_CD = PAY.PAYMENT_CD ;

追加するSQL

SQL

select HYSCAL_KBN,HYKSIHYO_KBN CASE HSYCAL_KBN WHEN '1' THEN CASE HYKSIHYO_KBN WHEN '01' THEN 'A' WHEN '02' THEN 'A' WHEN '03' THEN 'B' WHEN '04' THEN 'B' WHEN '05' THEN 'B' WHEN '06' THEN 'B' END WHEN '2' THEN CASE HYKSIHYO_KBN WHEN '01' THEN 'A' WHEN '02' THEN 'A' WHEN '03' THEN 'B' WHEN '04' THEN 'B' WHEN '05' THEN 'B' WHEN '06' THEN 'B' END WHEN '3' THEN 'C' ELSE NULL END AS KUBUN from HOGE;

追加後のSQL

SQL

SELECT MF_SISAKU_MAIN.SISKKNR_NO, MF_SISAKU_MAIN.TNT_CD, MF_SISAKU_MAIN.PAYMENT_CD, MF_SISAKU_MAIN.PAYMENT_TYPE,MF_SISAKU_MAIN.HSYCAL_KBN, MF_SISAKU_MAIN.HYKSIHYO_KBN,MF_SISAKU_MAIN.TNTBSY_CD, MF_SISAKU_MAIN.KOSIN_TIM, MF_SISAKU_MAIN.SISKDAT_SBT, MF_SISAKU_MAIN.PRIVATE_FLG, MF_SISAKU_MAIN.PAYAPLY_STAT,MF_SISAKU_MAIN.SISKAPLY_STAT,MF_SISAKU_MAIN.SIMU_STAT, HYKFROM_YM, HYKTO_YM, TKUISK_KNM, SISK_ID, SISK_KNM, HINGRP_KNM, HSY_KIN, PLN_KIN, JGN_KIN, SSKRYK_KNM, KNZSMEI_SEI_KNM, KNZSMEI_MEI_KNM,SISKJTI_KBN, SISKPTN_KBN, SISKOPE_STAT, TRKSAPLY_STAT, CATE_JTI.KNM AS CATE_JTI_KNM, CATE_SBT.KNM AS CATE_SBT_KNM, PAY.PAYMENT_KNM,SIMU_SBT.KNM AS SIMU_SBT_KNM,MKH_SBT.KNM AS MKH_SBT_KNM,CASE WHEN HYKTO_YM IS NOT NULL THEN TO_CHAR(ADD_MONTHS(SUBSTR(HYKTO_YM, 1, 4) || \'/\' || SUBSTR(HYKTO_YM, 5, 2) || \'/01\', 1), \'YYYYMM\') END AS HYKTO_NXT_YM, CASE HSYCAL_KBN WHEN 1 THEN CASE HYKSIHYO_KBN WHEN 01 THEN A WHEN 02 THEN A WHEN 03 THEN B WHEN 04 THEN B WHEN 05 THEN B WHEN 06 THEN B END WHEN 2 THEN CASE HYKSIHYO_KBN WHEN 01 THEN A WHEN 02 THEN A WHEN 03 THEN B WHEN 04 THEN B WHEN 05 THEN B WHEN 06 THEN B END WHEN 3 THEN C ELSE NULL END AS HOGE FROM (SELECT MF_SISAKU.*, EGT0000P.EGT0102S(SISKKNR_NO, \'O\') || 01 AS SISKKIJUN_YMD FROM MF_SISAKU) MF_SISAKU_MAIN LEFT OUTER JOIN VW_TKUISK ON MF_SISAKU_MAIN.HYKHOJIN_CD = VW_TKUISK.TKUISK_CD AND SISKKIJUN_YMD BETWEEN VW_TKUISK.YUKOFROM_YMD AND VW_TKUISK.YUKOTO_YMD LEFT OUTER JOIN MF_SISKHINGRP ON MF_SISAKU_MAIN.SISKKNR_NO = MF_SISKHINGRP.SISKKNR_NO AND SISK_SEQ = 1 AND HYKHSY_KBN = 1 AND HYOJI_SEQ = 1 LEFT OUTER JOIN MF_HINGRP ON MF_HINGRP.HINGRP_CD = MF_SISKHINGRP.HINGRP_CD AND SISKKIJUN_YMD BETWEEN MF_HINGRP.YUKOFROM_YMD AND MF_HINGRP.YUKOTO_YMD LEFT OUTER JOIN VW_NEWSSK ON MF_SISAKU_MAIN.TNTBSY_CD = VW_NEWSSK.SSK_CD AND SISKKIJUN_YMD BETWEEN VW_NEWSSK.YUKOFROM_YMD AND VW_NEWSSK.YUKOTO_YMD LEFT OUTER JOIN VW_KZNKHN ON MF_SISAKU_MAIN.TNT_CD = VW_KZNKHN.KZN_CD AND SISKKIJUN_YMD BETWEEN VW_KZNKHN.YUKOFROM_YMD AND VW_KZNKHN.YUKOTO_YMD LEFT OUTER JOIN MF_CATEGORY CATE_JTI ON MF_SISAKU_MAIN.SISKJTI_KBN = CATE_JTI.KBN AND CATE_JTI.CTGRSBT_KBN = \'SISKJTI\' LEFT OUTER JOIN MF_CATEGORY CATE_SBT ON MF_SISAKU_MAIN.SISKSBT_CD = CATE_SBT.KBN AND CATE_SBT.CTGRSBT_KBN = \'SISKSBT\' LEFT OUTER JOIN MF_CATEGORY SIMU_SBT ON MF_SISAKU_MAIN.SIMU_STAT = SIMU_SBT.KBN AND SIMU_SBT.CTGRSBT_KBN = \'SIMUST\' LEFT OUTER JOIN MF_CATEGORY MKH_SBT ON MF_SISAKU_MAIN.MKH_STAT = MKH_SBT.KBN AND MKH_SBT.CTGRSBT_KBN = \'MKHOST\' LEFT OUTER JOIN VW_PAYMENT PAY ON MF_SISAKU_MAIN.PAYMENT_CD = PAY.PAYMENT_CD ;

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2018/07/09 05:14

プレビュー見ながら質問を編集してください。 >「\」が「¥」に置き換えられ また「元々実装されているSQL」がなく「追加するSQL」だけでは分かりません。実際に実行しようとしているSQL全文を提示してください(あとできればテーブル定義も)
ta_ku0419

2018/07/09 05:32

テーブル定義はテーブル・ビューの量が多いため割愛しました。
ta_ku0419

2018/07/09 05:43 編集

エスケープシーケンスについては理解していますが、’などエスケープシーケンスが必要な文字は追加するSQLには含まれておらず、関係ないように思うのですが...?追加した際に、既存の部分に影響を与えるということはあるのでしょうか。
m.ts10806

2018/07/09 05:46

\'/\'   \'YYYYMM\'  などなど、沢山入れようとしているように思いますが、どのような意図でこれらは入っているのでしょうか。
ta_ku0419

2018/07/09 05:48

TO_CHAR()で日付型をYYYYMMの文字型に変更しようとしています。
m.ts10806

2018/07/09 05:52

ちなみにバックスラッシュが円マークに置き換えられ・・は実際は置き換えられたわけではありません。同じものです(環境によって表示が変わります)。エスケープしようとして\を入れたわけではないのでしょうか?何のための\なのでしょうか。いずれにしても今回のSQLには不要な対応かと。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

PHP

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

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。