2015-05-15 4 views
-2

я хочу, чтобы объединить условия, и оператор ..объединения и оператор в MySQL

в мой запрос я хочу, чтобы объединить 3 coditions, где результат появляется, когда все они истинны.

я хочу для того чтобы достигнуть этого

SELECT * FROM table WHERE 'condition1' AND ('condition2' AND 'condition3'); 

я попробовал эту комбинацию, но он не работает.

это фактический код

SELECT * FROM planmenu WHERE name LIKE '%$search%' AND type LIKE '%$type%' AND dishcontent LIKE '%$dishcontent%' 

где $ поиск, $ типа и $ dishcontent являются PHP переменные. однако, когда я размещаю OR insteade второго И, он отлично работает. но когда я использую И это не так!

+2

Вам не нужны скобки. Ваше утверждение верное, предполагая, что вы фактически заменяете 'condition1' чем-то вроде column = 'value' –

+0

Вы должны дать условия значение? 'condition1 = 'what'' –

+0

Псевдокод выше выглядит правильно (помимо того, что у вас есть строковые литералы вместо условий, конечно). Не могли бы вы поделиться своим фактическим кодом и объяснить, почему он не действует так, как вы ожидали? – Mureinik

ответ

0

В вашем SQL нет ничего плохого. Проверьте свои данные.

create table planmenu ( 
    name varchar(20), 
    type varchar(20), 
    dishcontent varchar(20) 
); 

insert into planmenu values ('a','b','c'); 

Теперь, если вы сделаете это:

SELECT * 
FROM planmenu 
WHERE name LIKE '%z%' 
AND type LIKE '%z%' 
AND dishcontent LIKE '%c%'; 

Вы получаете нулевые записи назад, потому что нет никаких записей, соответствующих всем трем условиям.

Если вы сделаете это:

SELECT * 
FROM planmenu 
WHERE name LIKE '%z%' 
AND type LIKE '%z%' 
OR dishcontent LIKE '%c%'; 

Вы получите запись обратно, потому что или делает это так, что первые два условия или только третье условие должно быть правдой. Это эквивалент запуска:

SELECT * 
FROM planmenu 
WHERE (name LIKE '%z%' AND type LIKE '%z%') 
OR dishcontent LIKE '%c%'; 

Проверьте свои данные. У вас нет записей, соответствующих всем трем условиям.

0

Измените условие на столбцы, которые вы хотите запросить, со значениями, которые вы пытаетесь получить.

SELECT 
* 
FROM table 
WHERE 
condition1='something' AND 
condition2='somethingelse' AND 
condition3='somethingdifferent'; 
Смежные вопросы