masterlelik, DATEDIFF решает задачу полностью, если я правильно понял условия
SELECT id, DATEDIFF(date_to, date_from) * sum, sum, date_from, date_to WHERE тут условия по временному отрезку + можно тот же самый DATEDIFF для условия на длину отрезка
Выход
Цитата |
"1","3500","500","2016-07-06","2016-07-13" "2","700","100","2016-07-07","2016-07-14" "3","6300","300","2016-07-06","2016-07-27" "4","500","500","2016-07-15","2016-07-16"
|
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
S.Chushkin
6.07.2016 - 21:01
Цитата (masterlelik @ 6.07.2016 - 15:50) |
Считаем, что непрерывный и броней нет. |
Даже если броней нет, то всё равно поиск диапазонов в списке делать лучше в ПХП.
А вот если выборка сложная, типа того, что описал Guest, тогда возможно лучше делать в SQL. Тут уже надо анализировать конкретику.
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
6.07.2016 - 21:08
Цитата (Guest @ 6.07.2016 - 16:31) |
называть запрос нерабочим, мягко говоря, охренительное преувеличение. |
Вы ошибаетесь. И похоже невнимательно читали доку.

Сто раз говорил уже, и не только я - т.е. N*100 раз, что значения полей, не включённых в GROUP BY будут от балды (т.е. не гарантируются). Соответственно, использование таких запросов, это ошибка в ПО.
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Цитата (S.Chushkin @ 6.07.2016 - 21:01) |
Даже если броней нет, то всё равно поиск диапазонов в списке делать лучше в ПХП. |
Зачем? Почему?
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
S.Chushkin
7.07.2016 - 01:10
> Зачем?
Чтобы сделать правильно.
> Почему?
Потому что это правильно для этой задачи.
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Цитата (S.Chushkin @ 6.07.2016 - 21:08) |
Сто раз говорил уже, и не только я - т.е. N*100 раз, что значения полей, не включённых в GROUP BY будут от балды (т.е. не гарантируются). Соответственно, использование таких запросов, это ошибка в ПО. |
Тю... а я то уж думал...
На это могу только посоветовать запустить подзапрос отдельно и посмотреть на промежуточные результаты.... Подсказка: во временной таблице уникальны не только строки, но и значения в каждом из столбцов
S.Chushkin
7.07.2016 - 01:45
masterlelik
8.07.2016 - 06:38
Цитата (chee @ 6.07.2016 - 14:27) |
masterlelik, DATEDIFF решает задачу полностью, если я правильно понял условия |
В том случае, если условие по стоимости делать средствами пхп, тогда да.
Цитата |
значения полей, не включённых в GROUP BY будут от балды (т.е. не гарантируются). |
согласен, в общем случае так и происходит, просто в частно случае могут выбраться нужные данные, а могут и не те что надо. Как в текущем случае надо смотреть с большим массивом данных.
_____________
Цитата |
могут выбраться нужные данные, а могут и не те что надо |
Цитата |
надо смотреть с большим массивом данных |
никуда не нужно смотреть, просто на эти данные не должна быть завязана логика
_____________
Стимулятор ~yoomoney - 41001303250491
masterlelik, что за условие по стоимости, почему его не сделать в where части?
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
S.Chushkin
8.07.2016 - 10:25
Цитата (Valick @ 8.07.2016 - 09:11) |
Цитата | надо смотреть с большим массивом данных |
никуда не нужно смотреть, просто на эти данные не должна быть завязана логика
|
100%!
Ещё раз (N*100-й + 1): данные будут от балды.
Т.е. в частном случае 1000 раз оно выдаст правильный результат, а на 1001, например, неправильный. От чего зависит правильно/неправильно и когда это будет, знают только разрабы движка.
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
8.07.2016 - 10:32
Цитата (masterlelik @ 6.07.2016 - 15:50) |
Считаем, что ... броней нет. |
А где Вы дурите нас?
Цитата:
"Потому что могут быть номера забронированы, и, следовательно, некоторые дни могут быть недоступны." (phpclub.ru)
Так всё же, у Вас номера бронируются или нет?
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
masterlelik
11.07.2016 - 11:46
Цитата (S.Chushkin @ 8.07.2016 - 06:32) |
Цитата (masterlelik @ 6.07.2016 - 15:50) | Считаем, что ... броней нет. |
А где Вы дурите нас? Цитата: "Потому что могут быть номера забронированы, и, следовательно, некоторые дни могут быть недоступны." (phpclub.ru)
Так всё же, у Вас номера бронируются или нет?
|
Прошу прощения за долгий ответ - не было электричества.
Брони не учитываются, т.е. кто то сказал, что вдруг есть брони и я чуть отвлекся в сторону.
Еще раз скажу, что про брони думать не нужно их нет и не будет.
_____________
masterlelik
12.07.2016 - 17:46
Проверил вариант от Guest - группировка по dateFrom не работает. А точнее она то работает, но если есть много отелей и у них совпадают даты, то часть результатов пропадает
_____________
masterlelik, я вот одно не понимаю, чем мой вариант-то тебя не устраивает? Изич же.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.