Новости
Документация
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

> Original message text:
> 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..
>
> как быть?
>


From: Dinky - 22/06/2006 - 18:09:36
Subject:LEFT JOIN, NULL и where
-----------------
если честно, не совсем понятна логика - зачем вам left join? если дополнительные поля не заданы, то не нужно джоинить вторую таблицу, а если заданы, так это должен быть уже inner join..

--
Dmitry


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
28921



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