|
MySQL.RU - Webboard
Вернуться
LEFT JOIN, NULL и where (Егор) 22/06/2006 - 09:57:18
Re: LEFT JOIN, NULL и where (Dinky) 22/06/2006 - 18:09:36
From: Егор - 22/06/2006 - 09:57:18
Subject:LEFT JOIN, NULL и where
-----------------
второй день не могу придумать sql-запрос для поиска пользователей сайта..
задача вроде бы стандартная
допустим есть две таблицы :
основная: users - отсюда интересуют лишь поля id,nickname и sex
дополнительная: users_secondary - опциональная информация о пользователях(заполняется не всегда). интересующие поля weight, stature.
есть форма поиска, через которую юзер делает запросы:
допустим, это - nickname, пол, диапазон веса и роста.
причём, если юзер не ввел значение какого-либо из полей должны охватываться все записи.(к прим., если установлена лишь нижняя граница роста в 200см - должны выбираться все юзеры выше 200 и т.п.)
с незаполненными полями на первый взгляд всё просто. к прим. -
if (@$_POST['nickname']) { $nickname = $_POST['nickname']; } else { $nickname = '%'; }
if (@$_POST['weight0']) { $weight0 = $_POST['weight0']; } else { $weight0 = '0'; } и т.п.
первое что пришло в голову -
select u.id from users u left join users_secondary sec on u.id = sec.uid where u.nickname like '$nickname' and
u.sex = '$sex' and
sec.stature > '$stature0' and sec.stature < '$stature1' and
sec.weight > '$weight0' and sec.weight < '$weight1'
limit 100
но тут возникает проблема - если во второй таблице нет соотв-й записи LEFT JOIN возвращает его значением NULL и операторы сравнения в любом соучае вернут false..
как быть?
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
28921
|
|