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




MySQL.RU - Webboard



Вернуться
Запрос на выборку по привязанным аттрибутам (// And) 24/02/2012 - 17:13:56
      Re: Запрос на выборку по привязанным аттрибутам (Akina) 25/02/2012 - 01:05:05
      Re: Запрос на выборку по привязанным аттрибутам (// And) 25/02/2012 - 03:09:06

> Original message text:
> From: // And - 24/02/2012 - 17:13:56
> Subject:Запрос на выборку по привязанным аттрибутам
> -----------------
> Приветствую!
>
> Возникла проблема при написании sql-запроса. Запрос следующего характера.
>
> Необходимо выбрать людей из таблицы, которым привязаны атрибуты и их значения во второй.
>
> Пример таблиц:
>
> humans:
> human_id name age
> 1 Bob 42
> 2 Jack NULL
>
> human_attributes:
> human_id attribute_id value
> 1 1 'No'
> 1 2 'Yes'
> 2 1 'Sure!'
>
> Например, необходимо выбрать людей из humans, у которых есть атрибут с id 1 и значением 'No', и атрибут с id 2, и значением 'Yes'
>
> Навскидку такое решение:
> SELECT humans.*
> FROM humans
> INNER JOIN human_attributes ha1 ON humans.human_id = human_attributes.human_id
> INNER JOIN human_attributes ha2
> ON humans.human_id = human_attributes.human_id
> WHERE
> (ha1.attribute_id = 1 AND ha1.value = 'No')
> AND
> (ha2.attribute_id = 2 AND ha2.value = 'Yes')
>
> , что выглядит извращенно, что ли.
>
> Какое решение было бы подходящим?
>


From: Akina - 25/02/2012 - 01:05:05
Subject:Запрос на выборку по привязанным аттрибутам
-----------------
SELECT h.*
FROM humans h
INNER JOIN human_attributes ha
ON h.human_id = ha.human_id
WHERE
(ha.attribute_id = 1 AND ha.value = 'No')
OR
(ha.attribute_id = 2 AND ha.value = 'Yes')
GROUP BY h.human_id
HAVING COUNT(h.human_id) = 2;


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

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

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



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