За последние 24 часа нас посетили 50062 программиста и 1727 роботов. Сейчас ищет 661 программист ...

Запрос с промежутком в котором одна часть может быть равна 0

Тема в разделе "MySQL", создана пользователем RazerVG, 12 май 2015.

  1. RazerVG

    RazerVG Активный пользователь

    С нами с:
    5 дек 2013
    Сообщения:
    103
    Симпатии:
    0
    Вот кусок таблицы для примера.
    [​IMG]

    Из таблицы мне необходима цена.
    Пример запроса для 314:
    Код (Text):
    1. SELECT price FROM prices WHERE id_type_print = '1' AND id_format = '1' AND id_category = '3' AND id_paper = '5' AND min_quantity <= '20' AND (max_quantity =  'NULL' OR max_quantity >= '20')
    Запрос выводит цену 323. Правильно.
    Пример запроса для 315:
    Код (Text):
    1. SELECT price FROM prices WHERE id_type_print = '1' AND id_format = '1' AND id_category = '3' AND id_paper = '5' AND min_quantity <= '50' AND (max_quantity =  'NULL' OR max_quantity >= '50')
    Запрос ничего не выводит.

    Как модифицировать запрос, чтобы он выводил и 314, и 315 ?
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Re: Запрос с промежутком в котором одна часть может быть рав

    Правильно, и не должен выводить. Вы же сами указали в запросе max_quantity >= '50', а там 30, что ни разу не больше 50.
    Как выводить оба? Смотря по какому принципу вы делаете выборку. Я вам сейчас скажу, что:
    Код (Text):
    1. SELECT price FROM prices
    он будет выводить вам оба. А ещё абсолютно всё, что есть в таблице. Составьте более корректно свой вопрос.
     
  3. RazerVG

    RazerVG Активный пользователь

    С нами с:
    5 дек 2013
    Сообщения:
    103
    Симпатии:
    0
    Re: Запрос с промежутком в котором одна часть может быть рав

    30, там в минимальном в максимальном NULL

    Добавлено спустя 2 минуты 36 секунд:
    Re: Запрос с промежутком в котором одна часть может быть равна 0
    50 это грубо говоря число которое должно быть в промежутке. Так вот в первом запросе, это число 20 и получаеться 10 < 20 < 29, а вот второй 30 < 50 < NULL

    Добавлено спустя 1 минуту 41 секунду:
    Re: Запрос с промежутком в котором одна часть может быть равна 0
    Я во второй запрос кидаю оба случая тк не знаю NULL там или число.
     
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Re: Запрос с промежутком в котором одна часть может быть рав

    А, да, простите.
    Код (Text):
    1. SELECT price FROM prices WHERE id_type_print = '1' AND id_format = '1' AND id_category = '3' AND id_paper = '5' AND min_quantity <= '50' AND (max_quantity =  NULL OR max_quantity >= '50')
    пробуйте
     
  5. RazerVG

    RazerVG Активный пользователь

    С нами с:
    5 дек 2013
    Сообщения:
    103
    Симпатии:
    0
    Re: Запрос с промежутком в котором одна часть может быть рав

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

    Добавлено спустя 8 минут 9 секунд:
    Re: Запрос с промежутком в котором одна часть может быть равна 0
    Нашел решение оказалось сравнение с NULL не по =, а по IS

    Добавлено спустя 31 секунду:
    Re: Запрос с промежутком в котором одна часть может быть равна 0
    То есть запрос
    Код (Text):
    1. SELECT price FROM prices WHERE id_type_print = '1' AND id_format = '1' AND id_category = '3' AND id_paper = '5' AND min_quantity <= '50' AND (max_quantity IS NULL OR max_quantity >= '50')
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Re: Запрос с промежутком в котором одна часть может быть рав

    Да, вы меня опередили. Но это огромный плюс, что вы сами нашли косяк.