0

SQLに問題があります。私のクエリは次のようになります:

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

コース(セミナー)の承認済みアプリケーションの数(<==承認済みステータス)を表示する必要がありますpredbiljezbaobradjena = 1それは私が必要とするほとんどのことをします。

受け入れられたサブスクリプションの数が0であっても、すべてのコースを表示したいのです。where句を省略した場合:

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であっても、すべてのコースが表示されますが、これらのアプリケーションには、処理されなかった、または拒否されたコースがいくつかあり、クエリに表示されたくありません。私はこのリンクを見つけました

COUNT=0のSQLServerでの行の表示

しかし、そこにある解決策はうまくいかないようです。SQLServer2012を使用しています。

4

2 に答える 2

1

条件をLEFTJOINに移動します

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
于 2012-11-11T21:22:06.653 に答える
0

メインのselect句でsubselectを使用できます

Select s.idseminar, 
   (select count(p.seminar) 
   from Predbiljezba p
   where p.seminar = s.idSeminar and p.obradjena = 1) as seminarCount
from Seminar s
于 2012-11-11T23:14:17.960 に答える