2014-12-05 2 views
1

У меня есть две таблицы в БД PostgreSQL, которые заключаются в следующем: users_orgsВыбор только один ряд на основе матча

user_id,org_id 
112,223 
113,224 
112,225 

Orgs

id,name 
223,Apple Ltd. 
224,Banana Ltd. 
225,Cherry Ltd. 

Я пытаюсь произвести вывод, что внешний вид например:

user_id,org_id,name 
112,223,Apple Ltd. 
113,224,Banana Ltd. 

Я только хочу, чтобы соответствовать одной организации, независимо от того, сколько раз пользователь_ id отображается в таблице orgs_users. Я безразличен к которому (мин, макс, что угодно).

В нижеприведенном запросе представлен список user_ids для запроса обеих таблиц и создания списка, но я получаю дубликаты, поэтому что-то не так.

select min(users_orgs.org_id), users_orgs.user_id, orgs.name from users_orgs 
left join orgs on users_orgs.org_id=orgs.id where orgs_users.user_id in (112,113) 
group by users_orgs.division_id, users_orgs.user_id, orgs.name 

ответ

1
select uo.user_id, uo.org_id, o.name 
from (select user_id, min(org_id) org_id 
     from users_orgs where user_id in (112,113) 
     group by user_id) uo 
    left join orgs o on uo.org_id = o.id; 

(Регистрация Orgs после группировки)

Смежные вопросы