2012-11-11 2 views
0

У меня проблема SQL. мой запрос выглядит следующим образом:Объединение двух таблиц со счетом и где не возвращает строки со счетом 0

Select 
    s.idseminar, count(p.seminar) 
From 
    Seminar as s 
LEFT OUTER JOIN 
    Predbiljezba AS p ON p.seminar = s.idSeminar 
WHERE 
    p.obradjena = 1 
Group by 
    s.idSeminar 


idseminar: 1, 2 
count....: 2, 2 

Он должен показывать количество принятых заявок (predbiljezba с obradjena = 1 < == принял статус) для курсов (семинаров). Он делает почти то, что мне нужно.

То, что я хочу, чтобы это отобразить все курсы, даже если число принятых подписок 0. Если я опустить предложение где:

Select 
    s.idseminar, count(p.seminar) 
From 
    Seminar as s 
LEFT OUTER JOIN 
    Predbiljezba AS p ON p.seminar = s.idSeminar 
Group by 
    s.idSeminar 


idSeminar: 1,2,3,4  
count....: 2,2,1,0 

он отображает все курсы, даже если она имеет 0 приложений, но в этих приложениях есть некоторые, которые не обрабатывались или были отклонены, и я не хочу, чтобы они всплывали в моем запросе. Я нашел эту ссылку

Displaying rows in SQL Server where COUNT = 0

, но решение не там, кажется, работает. Я использую SQL Server 2012.

ответ

0

Вы можете использовать подзапрос в главном пункте выберите

Select s.idseminar, 
    (select count(p.seminar) 
    from Predbiljezba p 
    where p.seminar = s.idSeminar and p.obradjena = 1) as seminarCount 
from Seminar s 
+0

Спасибо, сэр, это Querry сделал трюк , –

1

Переместить условие в LEFT JOIN

Select s.idseminar, count(p.seminar) 
From Seminar as s 
LEFT OUTER JOIN Predbiljezba AS p ON p.seminar = s.idSeminar AND p.obradjena = 1 
Group by s.idSeminar 
Смежные вопросы