这条sql语句哪里写错了啊?

hongcha99 2010-09-15 10:40:34
SELECT COUNT(*) AS Expr1
FROM tblUTPDetail
WHERE (AreaID = '1') AND (CONVERT(varchar(7), PlanTieTime, 126) >= '2010-05') AND
(CONVERT(varchar(7), PlanEndTime, 126) <= '2010-09')
这个是正确的查出来是:3906条
-----------------------------------------------
但我需要B表里面的一个字段,写了之后查出来了:62496
SELECT COUNT(*) AS Expr1
FROM tblUTPDetail a left OUTER JOIN
tblParameter b ON a.AreaID = b.ItemID
WHERE (a.AreaID = '1') AND (CONVERT(varchar(7), a.PlanTieTime, 126) >= '2010-05') AND
(CONVERT(varchar(7), a.PlanEndTime, 126) <= '2010-09')


谁帮我看看错在哪里啊?
...全文
230 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangchao98752 2010-09-15
  • 打赏
  • 举报
回复
一对多的情况下应该多找点共同的条件约束下!这样才能得到你要的信息
taz01 2010-09-15
  • 打赏
  • 举报
回复
count(*)的问题,你这是查询两个表所有的记录!
jianshao810 2010-09-15
  • 打赏
  • 举报
回复
SELECT COUNT(*) AS Expr1
FROM tblUTPDetail a left OUTER JOIN
tblParameter b ON a.AreaID = b.ItemID
WHERE (a.AreaID = '1') AND (CONVERT(varchar(7), a.PlanTieTime, 126) >= '2010-05') AND
(CONVERT(varchar(7), a.PlanEndTime, 126) <= '2010-09')
你语句是正确的,统计也是正确的,难道你是要 SELECT COUNT(*) AS Expr1,b.字段?
wwfgu00ing 2010-09-15
  • 打赏
  • 举报
回复
利用两个表里的关系,约束一下
凤凰涅檠 2010-09-15
  • 打赏
  • 举报
回复
用唯一键:比如 a.uid = b.uid
或者选择一条:min(itemID)
gs8716 2010-09-15
  • 打赏
  • 举报
回复

SELECT COUNT(*) AS Expr1
FROM tblUTPDetail a left inner JOIN
tblParameter b ON a.AreaID = b.ItemID
WHERE (a.AreaID = '1') AND (CONVERT(varchar(7), a.PlanTieTime, 126) >= '2010-05') AND
(CONVERT(varchar(7), a.PlanEndTime, 126) <= '2010-09')

凤凰涅檠 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 findcaiyzh 的回复:]
a.AreaID 对应多个 b.ItemID
[/Quote]

完全同意。。。
bkln81 2010-09-15
  • 打赏
  • 举报
回复
统计的记录应该是正确的,但是不清楚你的b表需要增加什么字段
bkln81 2010-09-15
  • 打赏
  • 举报
回复
select count(*) from (SELECT COUNT(*) AS Expr1 FROM tblUTPDetail a left OUTER JOIN
tblParameter b ON a.AreaID = b.ItemID WHERE (a.AreaID = '1') AND (CONVERT(varchar(7), a.PlanTieTime, 126) >= '2010-05') AND (CONVERT(varchar(7), a.PlanEndTime, 126)<= '2010-09') group by b.ItemID) c
hongcha99 2010-09-15
  • 打赏
  • 举报
回复
有没有人帮帮我啊?
hongcha99 2010-09-15
  • 打赏
  • 举报
回复
谁能给我写一个正确的啊?
宝_爸 2010-09-15
  • 打赏
  • 举报
回复
a.AreaID 对应多个 b.ItemID
wujinjian2008n 2010-09-15
  • 打赏
  • 举报
回复
那是因为 a.AreaID 对应的 b.ItemID 有多条记录,所以查出了很多重复记录
米娅 2010-09-15
  • 打赏
  • 举报
回复
SELECT count(*)
FROM tblUTPDetail as a INNER JOIN
tblParameter as b ON a.AreaID = b.ItemID
WHERE (a.AreaID = '1') AND (CONVERT(varchar(7), a.PlanTieTime, 126) >= '2010-05') AND
(CONVERT(varchar(7), a.PlanEndTime, 126) <= '2010-09')


这样写不知道对不对。。。

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧