Запрос дает неверные результаты - PullRequest
0 голосов
/ 07 июля 2011
SELECT `bio_community_groups`.`id`, `bio_community_groups`.`name`, `bio_community_groups`.`description`, `bio_community_groups`.`members`
FROM `bio_community_groups`
WHERE `bio_community_groups`.`category_id` = '1'
AND `bio_community_groups`.`name` LIKE '%rock%'
OR `bio_community_groups`.`description` LIKE '%rock%'

Проблема: нет группы с ID = 1, но в любом случае ... она дает мне все группы, где имя или описание похоже на '%rock%'.

Может, скобки могут мне помочь?Куда их положить?

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

Возможно, это то, что вам нужно:

SELECT `bio_community_groups`.`id`, `bio_community_groups`.`name`, `bio_community_groups`.`description`, `bio_community_groups`.`members`
FROM `bio_community_groups`
WHERE
( `bio_community_groups`.`category_id` = '1' )

AND 
( `bio_community_groups`.`name` LIKE '%rock%'
OR `bio_community_groups`.`description` LIKE '%rock%' );

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

`bio_community_groups`.`description` LIKE '%rock%

независимо от значения category_id.

0 голосов
/ 07 июля 2011

AND предшествует OR в MySQL. поэтому ваш запрос похож на (bio_community_groups.category_id = '1' AND bio_community_groups.name LIKE '%rock%') OR (bio_community_groups.description LIKE '%rock%). Просто поместите соответствующие скобки, чтобы решить эту проблему

...