Объявите переменную в базе данных MySQL «только для чтения»

0

Я хотел бы объявить переменную, чтобы исключить двойную запись при вводе даты в предложение WHERE. Однако база данных доступна только для чтения и не позволяет мне ничего объявлять. Вот что я пробовал:

SET @begin_date = '2017-12-01'
SET @end_date = '2017-12-30'
WHERE (ship.dateShipped BETWEEN @begin_date AND @end_date) 
OR (fulfill.datefulfilled BETWEEN @begin_date AND @end_date)

Запрос упрощен ради этой публикации, но в основном я пытаюсь это сделать. Я должен передать это продавцу, чтобы он работал по мере необходимости, и хотел бы как можно проще изменить параметры даты.

Есть ли способ объявить переменные в этом сценарии? Или, может быть, альтернативный способ написать предложение "WHERE", поэтому даты нужно вводить только один раз?

Я также пробовал:

SELECT @begin_date := '2017-12-01', @end_date := '2017-12-30'......

а также

DECLARE begin_date  INT unsigned DEFAULT '2017-12-01'
DECLARE end_date  INT unsigned DEFAULT '2017-12-30'

но безрезультатно.

Теги:

1 ответ

0
Лучший ответ

Ваш запрос упрощается почти до тарабарщины, но что-то вроде этого должно работать.

SELECT ...
FROM ....
INNER JOIN (SELECT '2017-12-01' AS beginDate, '2017-12-30' AS endDate) AS dr
ON (ship.dateShipped BETWEEN dr.beginDate AND dr.endDate) 
OR (fulfill.datefulfilled BETWEEN dr.beginDate AND dr.endDate)
...

Это действительно не позволит вам использовать переменные @?

  • 0
    Я пишу запрос для извлечения отчета из базы данных Fishbowl Inventory, и запрос даже не запускался, когда я использовал переменные @. Это соединение сделало свое дело, хотя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню