Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть данные по промо. Каждое промо имеет дату начала и дату окончания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 16:34 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Нужно выгрузить те промо, которые пересекаются с декабрем 2018 г. Написал такой SQL-запрос. SQL-запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Как можно было проще написать условие? Желательно с учетом такого фактора, если в полях [discount_begin] и/или [discount_end] присутствуют NULL. Есть ли специальные встроенные функции или необходимость в создании встроенной функции для поиска пересечении периодов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 16:35 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Вот тут, страдалец, https://www.sql.ru/forum/1308064/nayti-vse-neperesekaushhiesya-i-nesmezhnye-promezhutki-vremeni многократно написано условие пересечения. Есть даже с null... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 16:38 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
ferzmikkесли в полях [discount_begin] и/или [discount_end] присутствуют NULLИ как же интерпретируются NULLы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 16:39 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
ferzmikk, Код: sql 1. 2. это как-то странно авторКаждое промо имеет дату начала и дату окончания. автор[discount_begin] и/или [discount_end] присутствуют NULL но что-то типа Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 16:39 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaK, Естественно это упирается в два условия. discount_begin <= @discount_end AND discount_end >= @discount_begin Для особо продвинутых предлагаю написать условие пересечь прямоугольники и кубы. Должно быть 4 для прямоугольника и 6 для куба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 17:04 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
ferzmikk, условие попроще Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 17:49 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Asicferzmikk, условие попроще Код: sql 1. 2. Полный бред ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 18:00 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaKAsicferzmikk, условие попроще Код: sql 1. 2. Полный бред Это ведь заменит условие: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 09:48 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Asic, если перевсти, то если период начался раньше и закончился поже периода отбора, то он по вашему не должен попасть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 09:55 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaKAsic, если перевсти, то если период начался раньше и закончился поже периода отбора, то он по вашему не должен попасть 4-й вариант не отбирает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:03 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
ferzmikkTaPaKAsic, если перевсти, то если период начался раньше и закончился поже периода отбора, то он по вашему не должен попасть 4-й вариант не отбирает можно ещё 20 нарисовать которые будут что-то не делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:05 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaKferzmikkпропущено... 4-й вариант не отбирает можно ещё 20 нарисовать которые будут что-то не делать 21796027 4-й вариант это discount со значением 0004. На скриншоте видно, что должно попасть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:24 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
ferzmikkTaPaKпропущено... можно ещё 20 нарисовать которые будут что-то не делать 21796027 4-й вариант это discount со значением 0004. На скриншоте видно, что должно попасть Я потерял нить ваших аргументов. Предлагает: авторусловие попроще where discont_begin between @discount_begin and @discount_end or discount_end between @discount_begin and @discount_end при таком попадёт только ваш 4й вариант и всё, о чём вы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:26 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Надо кофе пить :) я и себя уже не понимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:30 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaK, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:36 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
AsicTaPaK, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Всё равно нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:40 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaKAsic, если перевсти, то если период начался раньше и закончился поже периода отбора, то он по вашему не должен попасть Так да, период начался раньше и закончился позже периода отбора и он попал в выборку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:43 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
AsicTaPaKAsic, если перевсти, то если период начался раньше и закончился поже периода отбора, то он по вашему не должен попасть Так да, период начался раньше и закончился позже периода отбора и он попал в выборку это явно не ваше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:45 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaKferzmikkпропущено... 21796027 4-й вариант это discount со значением 0004. На скриншоте видно, что должно попасть Я потерял нить ваших аргументов. Предлагает: авторусловие попроще where discont_begin between @discount_begin and @discount_end or discount_end between @discount_begin and @discount_end при таком попадёт только ваш 4й вариант и всё, о чём вы?Когда я писал условие, то я исходил такой логикой, что для попадания в анализируемый период теоретически возможно 4 варианта: 1. Промо началось ранее анализируемого периода (в данном случае это декабрь 2018) и закончилось в анализируемом периоде. 2. Промо началось в анализируемом периоде, но закончилось позже анализируемого периода 3. Промо началось и закончилось внутри анализируемого периода 4. Промо начало ранее анализируемого периода и закончилось позже анализируемого периода Из этих пунктов получилось сложное условие ferzmikk Код: sql 1. 2. 3. 4. 5. 6. 7. 8. TaPaKferzmikk, Код: sql 1. 2. Отбираются все 4 варианта Asicferzmikk, условие попроще Код: sql 1. 2. Отбирает 1, 2 и 3 варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 10:45 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
ferzmikk, Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 11:16 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Asicferzmikk, Код: sql 1. 2. 3. 4. Всё ещё нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 11:20 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaK, что я упустил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 11:37 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
AsicTaPaK, что я упустил? бессмысленность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 11:41 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaKferzmikk, Код: sql 1. 2. Работает же. Нужные варианты отбирает (1,2,3,4) и не нужные не отбирает (5,6). Или это условие что то не учитывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 12:07 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
ferzmikk, это загадка, что он хочет сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 12:09 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaK, Все таки это математика. Давайте тогда уж разберем этот логический нюанс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 12:17 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Вот единственно правильное решение, все остальное в помойку. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:05 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
JaffarВот единственно правильное решение, все остальное в помойку. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Мой герой! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:08 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
JaffarВот единственно правильное решениеГениально! Индексы - в топку! nolock - наше все! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:15 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
ferzmikk, От обратного: отбираем тех, которые не входят в период (это проще): - те, кто закончился до начала периода - и те, кто начался после конца периода И добавляем логическое НЕ. Код: sql 1. По правилу Де Морагана можно раскрыть формулу, или оставить так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:21 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
TaPaK, Учись студент, а то будешь всю жизнь ключи подавать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:30 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
tashkafoxferzmikk, От обратного: отбираем тех, которые не входят в период (это проще): - те, кто закончился до начала периода - и те, кто начался после конца периода И добавляем логическое НЕ. Код: sql 1. По правилу Де Морагана можно раскрыть формулу, или оставить так... и получить то что уже написано сутки назад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:30 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
JaffarTaPaK, Учись студент, а то будешь всю жизнь ключи подавать... Мой герой не очень умный оказывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:31 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
invm, кэп, ну если нужные поля(DT1 и DT2 ) not NULL - тогда можно и убрать перестраховку, а если нет - то терпите, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:34 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Jaffarкэп, ну если нужные поля(DT1 и DT2 ) not NULL - тогда можно и убрать перестраховку,Тогда это таки не единственно правильное решение? Jaffarа если нет - то терпите,А если нет - то надо мозги включать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:43 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
invm, Кто бы говорил... 2 дня обсуждать то что не стоит выеденного яйца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:51 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Jaffar2 дня обсуждать то что не стоит выеденного яйца.Вот именно. И тут пришел гениальный Jaffar и выдал эпическую чушь. Впрочем, как обычно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 14:55 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
Какой же сухой осадок-то остался? Так что ли нужно? Код: sql 1. 2. 3. Если придерживаться обозначений Jaffar 21796827 Исхожу из предположения, что для d1 и @d1 IS NULL - это "минус бесконечность", а для d2 и @d2 IS NULL - это "плюс бесконечность". Я же так и не дождался ответа на вопрос "как интерпретируются NULLы"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 16:17 |
|
||
|
Пересечение периодов
|
|||
|---|---|---|---|
|
#18+
iapferzmikkесли в полях [discount_begin] и/или [discount_end] присутствуют NULLИ как же интерпретируются NULLы?Это маловероятный случай, вдруг по каким то причинам заведено новое промо и не выбрана [discount_begin] и/или [discount_end]. Хотя в системе есть проверка перед записью. Но все равно актуально написать запрос так - вдруг NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2019, 16:38 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1688378]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 459ms |

| 0 / 0 |
