ваш вопрос "почему минимум из одной строки лезет в минимум другой" некорректен, потому что вы же делаете группировку
если "Мне нужно получить запись с mass 700" - зачем вам группировка ?
добавьте условие в where
Это узкий пример общей задачи - получение значение mass в периоде максимально приближенном на дату запроса т.е. сегодня mass 700, а когда запрос будет выполнен 15 октября, то mass снова будет 500
ну так сформулируйте нормальные требования, что вам в итоге нужно ) вы дали узкий пример, получили узкий ответ хотите сформировать общее решение ? озвучьте условия
Общая задача: Получение значение mass в периоде максимально приближенном на дату запроса т.е. сегодня mass 700, а когда запрос будет выполнен 15 октября, то mass снова будет 500 при том что данный запрос будет являться частью субзапроса и LIMIT применять не получиться.
"в периоде максимально приближенном на дату запроса" , ась ? по вашему условия я вижу вот такое решение : SELECT mass FROM sometable WHERE date1 < ADDDATE(CURRENT_DATE(), INTERVAL 1 DAY) AND date2 > ADDDATE(CURRENT_DATE(), INTERVAL 1 DAY) ровно то что вы попросили, если я не так понял, сформулируйте проблему более понятно
Вот в этом весь и фокус что у yid должна быть одна масса, а выходит 2 т.к. текущий день находится внутри обоих периодов
добавить к < знак = ? ) или брать не больше меньше а = ? если вам нужно за конкретный день
Это вопрос не дней, а периодов и странной организации базы. Весь год вещества должно быть 500, а вот на октябрь решили что надо 700, и мне нужно получить эти 700 при условии что больше данных нет. На первый взгляд всё очевидно, но почему-то выборка по минимуму дат сворачивается не до реально минимальной, а до минимальной но самой первой строки. Т.е. я ожидаю что результатом запроса: SELECT sid, mass, date1, date 2, min(ADDDATE(CURRENT_DATE(), INTERVAL 1 DAY)-datefrom) FROM sometable WHERE 1=1 AND yid = 12 AND enabled = 1 AND date1 < ADDDATE(CURRENT_DATE(), INTERVAL 1 DAY) AND date2 > ADDDATE(CURRENT_DATE(), INTERVAL 1 DAY) GROUP BY yid ORDER BY datefrom DESC, dateto DESC Будет sid | mass | date1 | date 2 | min 12 | 700 | 2021-10-01 | 2021-10-30 | 5 А выходит: 12 | 500 | 2021-01-01 | 2021-12-30 | 5
Обсуждают сегодня