2017-02-17 88 views
0

我努力以正確的方式編寫查詢。雖然它的工作我給出的錯誤:MySql聲明和使用選擇變量

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

很顯然,我仍然可以用這個錯誤,但#1的工作。我不特別喜歡'哈克'的方法和#2。這導致在進一步下線試圖運行查詢的問題。

來自Google Research,它表明錯誤可能是一個錯誤但是我很懷疑相信這一點。

什麼實際上,我試圖做的:

我有3個表:

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

的計劃是:

  1. 選擇過程詳細
  2. 加入驗證詳細信息
  3. 加入風險詳情
  4. 根據Validation_Date和Risk_TimePeriod 生成「Due_Date」。如果時間段爲150,則將150天添加到Validation_Date)。

喜歡的東西下面:

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

所以在這裏;通過將150(Risk_Level)添加到驗證日期來創建Due_Date。

當前查詢

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

你通過PHP腳本或MySQL控制檯例如 – RiggsFolly

+0

我把它從兩個運行查詢時出現此錯誤。 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