Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализовать фильтр 
V
    Опции темы
Mikron
Дата 28.3.2016, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Добрый день, требуется реализовать фильтр по характеристикам, для примера театры

Есть две таблицы 
table1
 id | name
 1 |  Гоголь центр
 2 |  Большой театр
 3 |  Малый театр

table2
id | description
 1 | Современный театр
 2 | Драматический театр

И таблица соответствия

table_relation
id | id_name | id_desc
 1|        1      |     1
 2|        1      |     2
 3|        2      |     2
 4|        3      |     2

То есть "гоголь центр" относится и к современному театру и к драматическому, большой только к драматическому и т.д

Нужно по выбору категорий из таблицы 2 вернуть id соответствующих театров из таблицы 1.
Для выбора одной категории запрос будет выглядеть так:
Код

SELECT id_name FROM table_relation WHERE id_desc = 1


Вернет 1

Для двух

Код

SELECT t1.id_name FROM table_relation t1 JOIN table_relation t2 ON t1.id_name = t2.id_name WHERE t1.id_desc = 1 AND t2.id_desc = 2


Вернет 1

А как сделать если будут выбраны три категории, четыре, десять?

Спасибо

Это сообщение отредактировал(а) Mikron - 28.3.2016, 14:39
PM MAIL   Вверх
Zloxa
Дата 28.3.2016, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Mikron @  28.3.2016,  15:36 Найти цитируемый пост)
Для двух


Код

SELECT id_name FROM table_relation WHERE id_desc in (1, 2) group by id_name having count(/*distinct*/id_desc) = 2




--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Mikron
Дата 28.3.2016, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Огромное спасибо за помощь!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0775 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.