Я изо всех сил пытаюсь написать запрос. Хотя он работает Я дал ошибку:Декларация 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]
План состоит в том, чтобы:
- Выбор процесса Детали
- Регистрация Validation Подробности
- Описание риска
- Создайте «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 "Выберите" пункт выделен красным цветом. Здесь появляется сообщение об ошибке. Если кто-нибудь может указать мне, где я ошибался, что было бы очень признательно! Спасибо
Вы получаете эту ошибку при выполнении запроса через PHP скрипт или из MYSQL консоли, например – RiggsFolly
я получаю его от обоих. Консоль MySQL воспроизводит ошибку, как показано выше (фактический запрос подсвечивается как время запуска, но он все еще показывает результаты). Проблема в PHP заключается в том, что, поскольку в MySQL отображается ошибка; результаты запроса не могут быть отображены из-за ошибки fetch_assoc(). – billcox33