За последние 24 часа нас посетили 62144 программиста и 1783 робота. Сейчас ищут 789 программистов ...

Непонятки с LIKE

Тема в разделе "MySQL", создана пользователем Eser, 11 сен 2010.

  1. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Помогите с запросом.

    [sql]select from mail theme LIKE '$_POST[find_mail]%' or id_record LIKE '$_POST[find_mail]%' or id LIKE '$_POST[find_mail]%' and user_send_del!='del';[/sql]
    Этот запрос игнорирует user_send_del!='del';

    Если написать например так:
    [sql]select from mail theme LIKE '$_POST[find_mail]%' and user_send_del!='del';[/sql]

    То все нормально.
     
  2. ShamahN

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

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    вообще-то у логических операций тоже есть приоритеты. Сначала NOT потом AND потом OR (если я не ошибаюсь. Никогда не парился, ибо простая человеческая логика перекликается с правилами построения логических выражений). В Вашем случае, вы получаете
    [sql]id LIKE '$_POST[find_mail]%' and user_send_del!='del'[/sql]
    а потом, результат этого условия сравнивается с
    [sql]theme LIKE '$_POST[find_mail]%' or id_record LIKE '$_POST[find_mail]%' or то_что_получилось[/sql]
    не знаю, что именно вам нужно от запроса, но смею предположить, что не хватает скобок
    [sql]( theme LIKE '$_POST[find_mail]%' or id_record LIKE '$_POST[find_mail]%' or id LIKE '$_POST[find_mail]%' ) and user_send_del!='del';[/sql]
     
  3. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Ага не хватало скобок.
    Спасибо!
     
  4. ShamahN

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

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    да нет. С логикой были проблемы. Можно и без скобок, если понимать что надо
    [sql] theme LIKE '$_POST[find_mail]%' and user_send_del!='del' or id_record LIKE '$_POST[find_mail]%' and user_send_del!='del' or id LIKE '$_POST[find_mail]%' and user_send_del!='del'[/sql]