sql select count - PullRequest
       2

sql select count

2 голосов
/ 02 декабря 2010

У меня есть две таблицы: вызовы и вложения, и я хочу отобразить все, что находится в таблице вызовов, но также показать, есть ли в вызове вложения, - определив, есть ли запись вложения с call_id в ней.Может быть, есть вложения, а может и нет.

звонки
call_id
title
описание

вложения
attach_id
attach_name
call_id

Если я напишу:

select call_id, title, description from calls

, чтобы дать мне список всех вызовов ....

Как можноЯ также включаю, есть ли в этой записи вызова приложение (я) или нет?

Спасибо,

Ответы [ 2 ]

3 голосов
/ 02 декабря 2010

Вы можете использовать внешнее соединение, чтобы выполнить это:

SELECT c.call_id, title, description, attach_name
FROM calls c
LEFT OUTER JOIN attachments a ON c.call_id = a.call_id

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

SELECT c.call_id, title, description, 
    ISNULL(attach_name, '(No attachment)') as attach_name
FROM calls c
LEFT OUTER JOIN attachments a ON c.call_id = a.call_id
1 голос
/ 02 декабря 2010
select a.call_id, a.title, a.description, count(b.attach_id)
from calls a, attachments b
where a.call_id = b.call_id
group by a.call_id, a.title, a.description
union all
select distinct a.call_id, a.title, a.description, 0
from calls a, attachments b
where not exists (select call_id from calls c where c.call_id = a.call_id)

это даст количество вложений для каждого звонка с одинаковым названием и описанием

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...