второй день не могу придумать 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..
как быть?
PS СУБД mysql