Основное объединение и объединение? - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть таблица A, таблица B и таблица C.

Я хочу выбрать 2 поля из таблицы A, одно поле из таблицы B (я предполагаю внутреннее соединение между этими двумя) и число для каждой записи, в которой идентификатор таблицы B находится в таблице C.

Так что у меня будет:

OpeartiveId | OperativeNumber | JobLocation | CountOfJobIdInWorkTable

Edit:

Operative
OperativeId
OperativeNumber

Jobs
JobId
JobLocation

Work
JobId
OperativeId

Ответы [ 4 ]

2 голосов
/ 01 февраля 2012

Предполагая, что вам также нужны записи из a и b, которые не имеют совпадающих записей в c, вам понадобится внешнее соединение:

select a.pk_a, b.pk_b, count(c.pk_c) 
from a 
inner join b on a.pk_a = b.pk_a 
left outer join c on b.pk_b = c.pk_b 
group by a.pk_a, b.pk_b;
1 голос
/ 01 февраля 2012

Не уверен, что это то, что вы ищете.глядя на поданную вами информацию, я придумал это.

select o.operativeId, o.OperativeNumber, j.JobLocation, COUNT(w.jobId)
from dbo.Operative o
Inner join works w
    ON o.OperativeID = w.OperativeId
INNER JOIN jobs j
ON w.jobId = j.jobId
GROUP by o.operativeId, o.OperativeNumber, j.JobLocation
1 голос
/ 01 февраля 2012

Переведите это на вашу фактическую схему и попробуйте:

select a.one, a.two, b.three, count(c.id)
from a
join b on a.id=b.id
left join c on c.bid=b.id
group by a.one, a.two, b.three, b.id
0 голосов
/ 01 февраля 2012
select a.a,a.b,b.a,(select count(*) from c where c.b_id = b.id)
from a 
join b on a.b_id = b.id
...