2012-02-07 2 views
0

У меня очень сумасшедший запрос, который я знаю, но когда я его запускаю, он возвращает все соответствия независимо от того, пустое или нет полевое mvideo.Запрос Mysql, игнорирующий NULL и пустые поля

запрос является:

SELECT * 
FROM `weaponsprojects` 
WHERE mvideo != "" 
    AND credit7 = "' .$person. '" 
    OR credit2 = "' .$person. '" 
    OR credit3 = "' .$person. '" 
    OR credit4 = "' .$person. '" 
    OR credit5 = "' .$person. '" 
    OR credit6 = "' .$person. '" 
    OR credit1 = "' .$person. '" 
    OR credit8 = "' .$person. '" 
    OR credit9 = "' .$person. '" 
    OR credit10 = "' .$person. '" 
    OR credit11 = "' .$person. '" 
    OR credit12 = "' .$person. '" 
    ORDER BY usort' 

и возвращается, когда любой из кредитов равного человека, но она полностью игнорирует М.Видео часть. Почему это??

Edit: поле не NULL, просто пустые без пробелов просто пустого

ответ

4

я думаю, что условие WHERE логически испорчено ... вам нужно преимущество здесь, так как:

SELECT * 
FROM `weaponsprojects` 
WHERE mvideo != "" 
    AND (credit7 = "' .$person. '" 
    OR credit2 = "' .$person. '" 
    OR credit3 = "' .$person. '" 
    OR credit4 = "' .$person. '" 
    OR credit5 = "' .$person. '" 
    OR credit6 = "' .$person. '" 
    OR credit1 = "' .$person. '" 
    OR credit8 = "' .$person. '" 
    OR credit9 = "' .$person. '" 
    OR credit10 = "' .$person. '" 
    OR credit11 = "' .$person. '" 
    OR credit12 = "' .$person. '") 
    ORDER BY usort' 

путем добавления ( и ) мы говорим WHERE заявление: «либо mvideo не пусто, и он совпадает с одним из OR заявления»

+1

Да, смотрите HTTP : //dev.mysql.com/doc/refman/5.0/en/operator-precedence.html – VolkerK

+0

Brillant это сработало, не зная, что я могу это сделать, имеет смысл, хотя –

Смежные вопросы