Как объединить результаты двух подзапросов в PostgreSQL? - PullRequest
2 голосов
/ 16 января 2010

привет, я новичок в sql (postgresql)
у меня есть 2 таблицы в результате из 2-х разных выбирает

       all calls                    our customer contacts
   number contact_id      and     contact_id    name
    3213      12                        12     jonh
    3213      34                        16     michael
    3213      43                        65     hewlet
    5432      16                        32     steward
    5432      51
    6543      65
    2322      54
    2322      32

1 номер может принадлежать разным контактам ... (контакты принадлежат разным клиентам) мне нужно выбрать отличные числа от 1-й таблицы результатов. и имена этих контактов из 2-й таблицы ..

и как я должен объединить свои 2 выбора

спасибо.

1 Ответ

9 голосов
/ 16 января 2010

Вы не сможете использовать ключевое слово distinct, так как вы на самом деле хотите выбрать также contact_id из таблицы all_calls. Вместо этого вам нужно будет использовать одну из агрегатных функций, чтобы выбрать один contact_id для каждого отдельного номера телефона.

В этом примере я использую функцию min(), которая даст мне контакт с самым низким числовым значением contact_id для каждого номера телефона:

select tmp.number, contacts.name
from (
  select number, min(contact_id) as min_id
  from all_calls
  group by number
) as tmp
join contacts on tmp.min_id = contacts.contact_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...