Вопрос по запросу

Тема в разделе "Базы данных", создана пользователем nejtr0n, 9 окт 2015.

Метки:
Статус темы:
Закрыта.
Модераторы: latteo
  1. nejtr0n

    nejtr0n Постоялец

    Регистр.:
    24 янв 2014
    Сообщения:
    124
    Симпатии:
    67
    eid | aid | value
    --------------------------------------+-----+-------
    0bfc66e9-4c49-418c-8c3f-ac70d61017d4 | 1 | 2015
    eca73e4d-d0bd-405f-9c22-2adcffd25465 | 2 | 110
    0bfc66e9-4c49-418c-8c3f-ac70d61017d4 | 2 | 115

    Товарищи, нужно выбрать eid записи у которых (aid=1 и value между 2010 и 2020) и (aid=2 и value между 110 и 120).
    Собственно вопрос: без джоина тут никак не обойтись?
    Просто таких фильтров будет очень много. Как это скажется на производительности?
     
  2. ykpon

    ykpon

    Регистр.:
    8 дек 2012
    Сообщения:
    250
    Симпатии:
    145
    select eid from `table` where aid=1 and value >= 2010 and value <= 2020
    Думаю, как то так.
     
  3. nejtr0n

    nejtr0n Постоялец

    Регистр.:
    24 янв 2014
    Сообщения:
    124
    Симпатии:
    67
    Внимательней читайте вопрос.
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.547
    Симпатии:
    1.419
    PHP:
    SELECT eid FROM `tableWHERE (aid=AND value >= 2010 AND value <= 2020) OR (aid=AND value >= 110 AND value <= 120)
    или так:
    PHP:
    SELECT eid FROM `tableWHERE aid=AND value >= 2010 AND value <= 2020
    UNION
    SELECT eid FROM 
    `tableWHERE aid=AND value >= 110 AND value <= 120

    PHP:
    AND value >= 110 AND value <= 120
    можно заменить на
    PHP:
    AND value BETWEEN 110 AND 120
     
    nejtr0n нравится это.
Статус темы:
Закрыта.