Поиск разницы между двумя столбцами в первой и второй строках с помощью предложения where в Lavavel Eloquent
Я разрабатываю лотерейное приложение с использованием Laravel, и я пытаюсь запросить lottery_result
WHERE в eloquent, когда вы посмотрите на результаты ниже, вы поймете, что есть номера WHERE
с разницей в 1 интервал чисел или некоторые из Event
имеет интервал 7 дней. Напр.. Событие: 2016-2017, а также событие: 2178-2179. Как я могу получить номера событий с разницей в 1 или
Event
с разницей в 7 дней интервала, с возвращением результатов со Event
Event_Date
Результат ниже:
columns(w5) == 29
Ответы - Поиск разницы между двумя столбцами в первой и второй строках с помощью предложения where в Lavavel Eloquent / Finding Difference between two columns in first and second rows using where clause in Lavavel Eloquent

24.12.2019 09:56:22
То, что вы ищете, - это LAG()
, которая есть у mysql, но Laravel не включает ее в свой API. Если вам нужна эта функциональность, вы можете сделать это на стороне приложения или использовать необработанный запрос в Laravel
Возможный пример (не уверен, какой результат вы ожидаете):
-- for events with gap 1
SELECT event,
event_date,
w5,
LAG(event, 1) OVER (
PARTITION BY event
ORDER BY event_date
) prev_eventnum
FROM lottery_result
WHERE w5 = 29
AND lottery_type_id = 6
AND event_num - prev_eventnum = 1
UNION
-- for event_dates 7 days apart
SELECT event,
event_date,
w5,
LAG(event_date, 1) OVER (
PARTITION BY event_date
ORDER BY event
) prev_eventdate
FROM lottery_result
WHERE w5 = 29
AND lottery_type_id = 6
AND DATEDIFF(event_date,prev_eventdate) = 7;

LAG
в данном конкретном случае. Ссылки могут умереть в будущем так что это хорошая идея иметь ответ который стоит сам по себе


