佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1428|回复: 4

SQL join 和 count 的问题。

[复制链接]
发表于 3-4-2007 08:19 PM | 显示全部楼层 |阅读模式
SELECT COUNT( sb.id) as intSuccessCount ,COUNT(db.id) as intDuplicateCount, h.id
  FROM tableA h
  LEFT OUTER JOIN tableB sb ON sb.id =  h.id AND sb.charStatus = 'A'
  LEFT OUTER JOIN tableB db ON db.id =  h.id AND db.charStatus = 'B'
  WHERE h.charStatus <> 'D'  AND h.id = 12345
  GROUP BY h.id
  ORDER BY h.id DESC

已经知道 id 12345有 12 个 charStatus = 'A' 和 7 个 charStatus = 'B' 的 records
可是出来的结果是
intSuccessCount   intDuplicateCount      id
84                84                     12345

为什么会乘起来呢????谁能帮助我???
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 3-4-2007 09:11 PM | 显示全部楼层
没有人会吗?
回复

使用道具 举报

发表于 3-4-2007 09:17 PM | 显示全部楼层
不明白你为何要用join?? 而且还join两次?当然会乘起来

试试这个吧(我没试过哦
select A.id, count(case(B.charStatus) when 'A' then '1' else null end) as intSuccessCount, count(case(B.charStatus) when 'B' then '1' else null end) as intDuplicateCount
from tableA A, tableB B
where B.id = A.id and A.id = 12345 and A.charStatus <> 'D'
group by A.id
order by A.id desc
回复

使用道具 举报

 楼主| 发表于 3-4-2007 09:23 PM | 显示全部楼层
不对啦,我join是因为我要个别拿到charStatus = 'A' 和 charStatus = 'B' 的 records....><
回复

使用道具 举报

 楼主| 发表于 3-4-2007 09:32 PM | 显示全部楼层
原帖由 神仙祖宗 于 3-4-2007 09:17 PM 发表
不明白你为何要用join?? 而且还join两次?当然会乘起来

试试这个吧(我没试过哦
select A.id, count(case(B.charStatus) when 'A' then '1' else null end) as intSuccessCount, count(case(B. ...

谢谢你啦,我做到了,tqtqtqtqtq
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 28-8-2025 06:10 AM , Processed in 0.112287 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表