0

我正在努力以正确的方式编写查询。虽然它确实有效,但我得到了错误:

找到了一条新语句,但它与前一条语句之间没有分隔符(接近选择)

显然我仍然可以处理这个错误,但 #1。我不是特别喜欢“hacky”的应对方法和#2。它在尝试运行查询的过程中进一步导致 php 出现问题。

从谷歌研究它表明错误可能是一个错误,但我怀疑这一点。

我实际上正在尝试做的事情:

我有 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

所以在这里; Due_Date 是通过将 150 (Risk_Level) 添加到 Validation 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

我的第一个“选择”子句以红色突出显示。这是错误消息出现的地方。如果有人能指出我哪里出错了,那将不胜感激!谢谢

4

1 回答 1

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
于 2017-02-17T09:38:12.457 回答