2017-02-17 11 views
0

私は正しい方法でクエリを書くのに苦労しています。 が、それは私がエラーを与えていに動作します:MySql宣言と選択変数の使用

A new statement was found but no delimiter between it and the previous one (near select)

はもちろん、私はまだ、このエラーが、#1で動作することができます。私は特に「ハッキー」な対処法を気に入っていません。それは、PHPの問題を引き起こしている行をさらにクエリを実行しようとしている。

Googleの調査によれば、エラーはバグである可能性がありますが、私はこれを信じるのは間違いです。

  1. 選択プロセスの詳細
  2. 検証に参加:

    Table P [Process_ID+, Process_Name, Risk_ID*] 
    Table V [Validation_ID, Process_ID+, Validation_Date] 
    Table R [Risk_ID*, Risk_TimePeriod] 
    

    計画はにある:

    が、私は3つのテーブルを持っている:私は実際に何をしようとしている

    詳細

  3. 参加するリスクの詳細
  4. Validation_DateとRisk_TimePeriodに基づいて「Due_Date」を生成します。期間が150の場合、Validation_Dateに150日を追加します)。

以下のような何か:だからここ

Process_ID | Process_Name | Validation_Date | Due_Date | Due_Days | Risk_Level 
1    My_Process  2017-02-17   2017-07-17 -150   High 

。 Due_Dateは、検証日に150(Risk_Level)を追加して作成されました。

現在のクエリ

Set @TimePeriod = 
(Select r.Risk_TimePeriod 
from processes_active p 
inner join processes_risk_config r 
on r.Risk_ID = p.Process_Risk 
where p.Process_ID = 2); 

Select p.Process_ID, 
p.Process_Name, 
v.Validation_Date, 
Date_Add(v.Validation_Date, interval @TimePeriod Day) as Due_Date, 
Datediff(Now(), Date_Add(v.Validation_Date, interval @TimePeriod Day)) as Due_Days, 
r.Risk_Level 

From processes_active p 

left JOIN processes_validations v 
on p.Process_ID = v.Validation_Process_ID 

inner join processes_risk_config r 
on r.Risk_ID = p.Process_Risk 

Where p.Process_ID = 2 
Order By v.Validation_Date Desc 

私の最初の "選択" 句が赤く強調表示されます。ここにエラーメッセージが表示されます。誰かが私がどこに間違っていたかを指摘できればそれは大いに感謝されるだろう!ありがとう

+0

あなたは一例 – RiggsFolly

+0

のためのPHPスクリプトを介して、またはMYSQLコンソールからクエリを実行するとき、私は両方からそれを得る、このエラーが発生します。上記のように、MySQLコンソールはエラーを再現します(実際のクエリは起動時に強調表示されますが、結果は表示されます)。 PHPの問題は、MySQLにエラーが表示されるためです。 fetch_assoc()エラーのためにクエリの結果を表示することはできません。 – billcox33

答えて

0

私はこれを完全に複雑にしていました!

新しいワーキングクエリ:

選択

p.Process_ID, 
p.Process_Name, 
v.Validation_Date, 
r.Risk_TimePeriod, 
Date_Add(v.Validation_Date, interval r.Risk_TimePeriod Day) as Due_Date, 
Datediff(Now(), Date_Add(v.Validation_Date, interval r.Risk_TimePeriod Day)) as Due_Days, 
r.Risk_Level 

From pdc_processes.processes_active p 

left JOIN pdc_processes.processes_validations v 
on p.Process_ID = v.Validation_Process_ID 

inner join processes_risk_config r 
on r.Risk_ID = p.Process_Risk 

Where p.Process_ID = 2 
Order By v.Validation_Date Desc 
関連する問題