Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
28921



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |