За последние 24 часа нас посетили 20895 программистов и 1617 роботов. Сейчас ищут 1093 программиста ...

Создание поискового запроса

Тема в разделе "MySQL", создана пользователем vayas, 17 дек 2012.

  1. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    У меня вопрос, можно ли сделать каким то образом проверку на какое нибудь поле (вернет ли запрос результат).
    Например осуществляя запрос используя CASE.
    Первое условие ищет по колонке со странами, если запрос ничего не возвращает ищет в колонке с городами и т.д.
     
  2. Chushkin

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

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Можно.
    Но запрос будет навороченный и крайне НЕэффективный.
     
  3. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    А что лучше, как быть тогда в этой ситуации, что можно придумать что бы быстро работало? Соседний топик, этому посвещен
    http://www.php.ru/forum/viewtopic.php?f=20&t=43005
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сделай четыре запроса и не парься. =)
     
  5. vayas

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

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Есть вот другой вопрос, допустим придет множество значений к примеру 5 или 15 всегда по разному.
    Какие поля будут использоваться заведомо не известно, и в каких полях искать тот или иной параметр то же не известно, но количество полей ограничено всего три, а количество параметров может быть соответственно больше
    Как такое можно реализовать
    IN у LIKE нету, но как тогда?
    Код (Text):
    1.  
    2. SELECT * FROM an_object
    3.         WHERE concat(city, raion, street, area) LIKE IN ('param1', 'param2', 'param3', 'param4', 'param5')
     
  6. Chushkin

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

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    IN () это замена/аналог OR.
    Если не ошибаюсь, интерпретатор mySQL всегда транслирует это выражение в набор OR-ов, когда подготавливает запрос к выполнению.