2017-02-17 83 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