помогите с запросом

Ivanov

Новичок
помогите с запросом

есть в БД таблица с пользователями, есть таблица с их интересами, ее структура

id|тип|описание

к примеру

1|спорт|бег
2|спорт|плавание
3|книги|исторические романы
4|музыка|рок

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

пользователь|с каким типом интереса связан|id интереса

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

выбрать всех кому интересен спорт->плавание и музыка->рок

в таблице связей поле "с каким типом интереса связан" добавлено для того, чтобы можно было видеть по каждому типу наличие связей пользователь->тип интереса->перечень интересов. перечень типов заранее определен и не изменяется
 

Gas

может по одной?
count(*) cnt ... group by ... having cnt = 2

типы лучше в отдельную таблицу вынести, а в таблице связей денормализация (тип) допустима только в случае поиска по типу (без описания) и неудовлетворительная производительность с джойном, не уверен что эот твой случай.
 

Ivanov

Новичок
может быть еще такой вариант: через временные таблицы, сначала одну заполняем где пользователь->тип 1->увлечение потом пользователь->тип 2->увлечение, затем выбираем из двух временных таблиц, где совпадает пользователь
 

Gas

может по одной?
можно ещё выгребсти все данные из базы в php, а потом форичем всё посчитать, а чего, тоже ведь вариант.
 
Сверху