Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > объединение множеств


Автор: slutsker 8.3.2013, 20:55
добрый день,
запутался с запросом на объединение множеств smile 


есть таблица table
user_id |  user_group 

у нас есть список из нескольких user_group, к примеру, 2,24,35
требуется вывести все user_id, которые входят во все три user_group

Автор: slutsker 8.3.2013, 22:44
эээ
у mysql нет на этот случай простого решения?

p.s. 
сделал с помощью array_intersect на php, положив в массивы результат запроса для каждого значения user_group, но надеюсь, что есть более красивое решение

Автор: password 8.3.2013, 23:22
Если нет дублей по user_id,  user_group, то можно например так:
Код

select `user_id` from `table`
where `user_group` in (2,24,35)
group by `user_id`
having count(*)=3

где 3 - количество user_group

Автор: Akina 9.3.2013, 00:29
password, having count(distinct user_group)=3 - и пофиг на дубли.

Автор: slutsker 9.3.2013, 10:31
password, Akina
большое спасибо!

p.s.
а в mysql нет intersect?
я просто пытался сделать 

Код

SELECT user_id from table WHERE user_group = 2
INTERSECT
SELECT user_id from table WHERE user_group = 24
INTERSECT
SELECT user_id from table WHERE user_group = 35


но не вышло(
в чем дело?

Автор: Akina 9.3.2013, 20:40
Цитата(slutsker @  9.3.2013,  11:31 Найти цитируемый пост)
в mysql нет intersect?

нет... http://dev.mysql.com/doc/refman/5.5/en/index.html, прежде чем спрашивать тривиальные вещи.

Автор: slutsker 10.3.2013, 23:25
Akina, не судите строго
У нас разные представления о тривиальном)


Автор: Akina 11.3.2013, 08:56
Цитата(slutsker @  11.3.2013,  00:25 Найти цитируемый пост)
У нас разные представления о тривиальном

Возможно. Но простой поиск термина по официальной справке и просмотр заголовков отобранных статей имхо тривиальны с любой точки зрения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)