За последние 24 часа нас посетили 20069 программистов и 1695 роботов. Сейчас ищут 1864 программиста ...

Запросы по сочетанию разных условий

Тема в разделе "MySQL", создана пользователем armadillo, 22 янв 2008.

  1. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    В диалоге формируется условие для поиска, причем возможны разные сочетания для разных параметров, например:
    [sql]t1.t1_s1_id in(select s1_id from s1 where like '%%') OR t1.t1_s2_id in (select s2_id from s2 where like '%%')[/sql]
    делаю union
    вариантов может быть с десяток, у них произвольные сочетания, делаю
    PHP:
    1. $conditions[]=" select ..."
    и

    PHP:
    1. $out=implode(' union ',$conditions);
    бывает

    [sql]where x1 in ('.$out.') or x2 in ('.$out.')[/sql]


    Сейчас распечатал один такой запрос - он занял ровно два листа А4.


    [sql]select ... from ...
    ( select id from t1
    like $x
    union

    select id from t2
    like $x

    union
    select id from t3
    like $x

    union
    select id from t4
    like $x

    )

    or

    ( select id from t1
    like $x
    union

    select id from t2
    like $x

    union
    select id from t3
    like $x

    union
    select id from t4
    like $x

    ) [/sql]

    По скорости это оптимал.
    Но все равно что-то неправильно (с).
    Причем скорее всего в структуре.