2017-02-17 2 views
0

Я изо всех сил пытаюсь написать запрос. Хотя он работает Я дал ошибку:Декларация MySql и использование переменных выбора

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

Очевидно, что я все еще могу работать с этой ошибкой, но # 1. Мне не особенно нравятся «хакерские» методы преодоления и № 2. Это вызывает проблемы в php дальше по строке, пытаясь запустить запрос.

Из 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. Регистрация Validation Подробности
  3. Описание риска
  4. Создайте «Due_Date» на основе Validation_Date и Risk_TimePeriod (т. Если период времени равен 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) к дате подтверждения.

Текущий запрос

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 

My First "Выберите" пункт выделен красным цветом. Здесь появляется сообщение об ошибке. Если кто-нибудь может указать мне, где я ошибался, что было бы очень признательно! Спасибо

+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 
Смежные вопросы