一个简单的SQL问题(50分)

  • 主题发起人 主题发起人 jobsxy
  • 开始时间 开始时间
J

jobsxy

Unregistered / Unconfirmed
GUEST, unregistred user!
有两张表
table1
----
name
-----
name1
name2
name3

表2: table2
-------------
name gList
-------------
name1 22.50
name1 22.50
name2 30.00

那我用
select table1.name,count(*) as abc from table1,table2
where table1.name=table2.name
group by table1.name
显示
--------
name,abc
--------
name1 2
name2 1
---------

但我需要这样的:
--------
name,abc
--------
name1 2
name2 1
name3 0
---------
即name3没有在Table2出现,但也要求列出,其值为0,请问该如何写这SQL?
因为数据量较大,希望能比较高效,谢谢!
 
好像你用union可以解决的。自己多想想吧。
 
不行啊,我都想了一下午啦!
 
Select name,
(Select isnull(count(*),0) From Table2 where name=AA.name) as ABC
From Table1 AA

 
对不起,我问题没有描述清楚,问题应该是这样的:

有张表
code
price

select code,count(*) as recnum from table1
where (code='34') and (price<0)
group by code

意思是统计出指定编码在表中(price<0)的记录数,但如果此编码没有
price<0的记录,则以上SQL无返回,而我需要返回0,比如返回:

------------
code,recnum
------------
34 0
-----------
应该如何写?
 
谢谢quickSilver,我看到一点成功的希望了
 
select code,
recnum=case
when count(*) is null then 0
else count(*)
end
from table1
where (code='34') and (price<0)
group by code
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
851
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部