2011-05-19 1 views
1

データベースに2つのテーブルがあります。これは私にSQL 2テーブルクエリの問題

id | productname | total 
------------------------------- 
1 | bread   | 2 
2 | water   | 3 
3 | milk   | 1 

を示したが、私は他の製品を見ることができない

Select U.id, U.ad, COUNT(B.id) AS 'total' 
FROM tblProducts U 
    INNER JOIN TblBasvurular B ON B.urunid=U.id 
GROUP BY u.id,u.ad 

:私は、次のクエリを使用します。存在しない場合、私には他の人が見えません。あなたのRDBMSを指定しますが、それがSQL Serverであると仮定していなかった

id | productname | total 
------------------------------- 
1 | egg   | 0 
2 | bread  | 2 
3 | water  | 3 
4 | tea   | 0 
5 | milk  | 1 

答えて

1

あなたはdidnのためそれは、十分に明らかではないが、私はこのような結果を得ることができますどのように

二番目の表を見せてください。登録しよう

select 
U.id, 
U.ad, 
COUNT(B.id) as 'total' 
from tblProducts U 
left join TblBasvurular B on B.urunid=U.id 
Group by u.id,u.ad 
3

select U.id, U.ad, COUNT(ISNULL(B.id, 0)) as 'total' 
from tblProducts U 
left join TblBasvurular B on B.urunid = U.id 
Group by u.id, u.ad 
+0

Microsftデータベースをどのように知っていますか? ISNULL()はOracleまたはMySQLでも動作しますか? – chance

+0

すべてのデータベースがSQLサーバーではありませんか? ;)それは私の前提でした。 –

0

使用LEFT: しかし、内側があなたのクエリに参加左に参加変更しよう

select U.id,U.ad,COUNT(B.id)as 'total' 
from tblProducts U LEFT join TblBasvurular B on B.urunid=U.id 
Group by u.id,u.ad 

それがOracleの場合は、これを試してみてください。

select U.id,U.ad,NVL(COUNT(B.id),0) as 'total' 
from tblProducts U LEFT join TblBasvurular B on B.urunid=U.id 
Group by u.id,u.ad 

この意志NULLではなく0を表示します。

SQL Serverの場合は、NVLではなくISNULLを使用します。 MySQLの場合は、IFNULLを使用します。

これらのRDBMSのすべてについて、機能​​3210が機能します。

+0

私はmssqlサーバーを使用してありがとう – bulent