powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Многие ко многим, выборка по достижении всех условий
6 сообщений из 6, страница 1 из 1
Многие ко многим, выборка по достижении всех условий
    #39601747
Jssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день, помогите столкнулся с такой задачей не пойму как её решить.

Имеется 3 таблицы.

apartaments(id, name) = квартиры
abilities(id, name) = возможности

apartments_abilitites(id, id_apartments, id_abilities) = связующая таблица

Допустим у одной квартиры есть несколько возможностей например телевизор, кухня и душ
У второй квартиры есть только 2 возможности телевизор и кухня

Как сделать выборку что если человек выбрал телевизор, кухню и душ ему выбралось только одна квартира где сошлись все 3 параметра, но чтоб этих параметров было сколько захочу а не конкретно только три, помогите пожалуйста
...
Рейтинг: 0 / 0
Многие ко многим, выборка по достижении всех условий
    #39601757
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
WHERE благо IN ('список хотелок')
GROUP BY хата
HAVING COUNT(благо) = 'количество хотелок'
...
Рейтинг: 0 / 0
Многие ко многим, выборка по достижении всех условий
    #39601766
Jssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вы не могли бы более развёрнуто написать а то я так не пойму)) Например выбрать все квартиры где присутствует телевизор и душ.
Конкретный запрос если можно, Спасибо
...
Рейтинг: 0 / 0
Многие ко многим, выборка по достижении всех условий
    #39601783
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эххх...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT ap.name
FROM apartaments ap, abilities ab, apartments_abilitites aa
WHERE ap.id = aa.id_apartments
  AND ab.id = aa.id_abilities
/* пошёл фильтр по характеристикам */
  AND ab.name IN ('телевизор', 'душ')
GROUP BY ap.name      /* или ap.id, или aa.id_apartments */
HAVING COUNT(ab.name) /* или ab.id, или aa.id_abilities */ 
       = 2            /* телевизор - раз, душ - два*/
...
Рейтинг: 0 / 0
Многие ко многим, выборка по достижении всех условий
    #39601800
Jssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое очень помогли, а еще вопрос на сколько сильно это скажется на производительности выборки при значениях в 5 - 10 тысяч квартир и при 10 - 20 возможностях ?
...
Рейтинг: 0 / 0
Многие ко многим, выборка по достижении всех условий
    #39601813
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да чему тут тормозить-то? Был бы индекс...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Многие ко многим, выборка по достижении всех условий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]