Это может быть так просто, как вам нужны скобки в предложении where:
(usereducation.school like 'msu%' OR like 'minnesota state%')
В противном случае OR будет иметь более низкий приоритет, чем соседние AND.
РЕДАКТИРОВАТЬ: 2011-03-06
Ниже я отформатировал код, чтобы его было немного легче читать, а также переместил проверку userinformation
и usereducation
в предложения exists()
. Я делаю это потому, что если у пользователя более 1 userinformation
или usereductionat
строк, соответствующих вашим критериям, это повлияет на совокупность count()
.
select
userpreference.preferencevalue as 'Music',
COUNT(*) as 'SingleFemaleCount'
from users, userpreference
where users.Gender = 'female'
and userpreference.Id = users.Id
and userpreference.preferencetype = 'music'
and exists
(select *
from userinformation
where userinformation.Id = users.Id
and userinformation.informationvalue = 'single')
and exists
(select *
from usereducation
where usereducation.Id = users.Id
and (usereducation.school like 'msu%' OR like 'minnesota state%'))
GROUP BY userpreference.preferencevalue
ORDER BY COUNT(*) DESC limit 10
Еще одна вещь, которую нужно проверить, это то, что (usereducation.school like 'msu%' OR like 'minnesota state%')
действительно находит все записи MSU. Если набор результатов не слишком велик, запустите select distinct school from usereducation
, чтобы проверить и убедиться, что вы получаете все записи.
Наконец, я предпочитаю использовать синтаксис объединения следующим образом:
select
userpreference.preferencevalue as 'Music',
COUNT(*) as 'SingleFemaleCount'
from users
inner join userpreference on userpreference.Id = users.Id
where users.Gender = 'female'
and userpreference.preferencetype = 'music'
and exists
(select *
from userinformation
where userinformation.Id = users.Id
and userinformation.informationvalue = 'single')
and exists
(select *
from usereducation
where usereducation.Id = users.Id
and (usereducation.school like 'msu%' OR like 'minnesota state%'))
GROUP BY userpreference.preferencevalue
ORDER BY COUNT(*) DESC limit 10
Я понимаю, что полностью изменил ваш запрос, но эй, это домашняя работа, верно:)