注册 登录
编程论坛 ASP.NET技术论坛

数据库查询和页面显示不一样的结果

等待冰柠檬 发布于 2010-07-29 16:59, 987 次点击
小弟的存储过程:
程序代码:
[color=#0000FF]set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
Create PROCEDURE [dbo].[BranchStatistic_GetByAll] --获取网点统计运费
@branchname varchar(50)='',
@startdate varchar(50)='',
@enddate varchar(50)='',
@branchcode varchar(50)='',
@usertype int
AS
SET NOCOUNT ON
declare @mssql nvarchar(4000)
if (@usertype=0)

set @mssql='Select Branchs.BranchCode,Branchs.BranchName
    ,Income = ISNULL(sum(Orders.PSettleAmount),0)
        ,Outcome = ISNULL(sum(Orders.ISettleAmount),0)
from Branchs
left join Orders on Orders.StartBranchCode = Branchs.BranchCode where 1 = 1'
else

set @mssql='Select Branchs.BranchCode,Branchs.BranchName
    ,Income = ISNULL(sum(Orders.PSettleAmount),0)
        ,Outcome = ISNULL(sum(Orders.ISettleAmount),0)
from Branchs
left join Orders on Orders.StartBranchCode = Branchs.BranchCode and StartBranchCode = '''+ @branchcode+ '''where 1 = 1'

if(len(@branchname) > 0)
begin
   set @mssql=@mssql+' and Branchs.BranchName like ''%'+@branchname+'%'''
end

if(len(@startdate)>0)
begin
    set @mssql=@mssql+' and Orders.CreateTime>='''+@startdate+''''
end

if(len(@enddate)>0)
begin
    set @mssql=@mssql+' and Orders.CreateTime<='''+@enddate+''''
end
set  @mssql=@mssql + 'Group by Branchs.BranchCode,BranchName'

exec sp_executesql @mssql
    SET NOCOUNT OFF
[/color]

SQL查询语句
程序代码:
select Branchs.BranchCode,Branchs.BranchName
    ,Income = ISNULL(sum(Orders.PSettleAmount),0)
        ,Outcome = ISNULL(sum(Orders.ISettleAmount),0)
from Branchs
left join Orders on Orders.StartBranchCode = Branchs.BranchCode
where 1 = 1

Group by Branchs.BranchCode,BranchName
查询出来的结果
只有本站会员才能查看附件,请 登录


当我把参数传到存储过程里面
USE [MemberDB_lg_ceshi]
GO

DECLARE    @return_value int

EXEC    @return_value = [dbo].[BranchStatistic_GetByAll]
        @usertype = 0

SELECT    'Return Value' = @return_value

GO
执行后 跟在SQL里面查询的结果一样
但是在 网页里面只显示一条记录。。。
只有本站会员才能查看附件,请 登录


希望高手帮忙下!这是什么原因。。。






7 回复
#2
bygg2010-07-29 17:26
很明显是你页面中传的值影响了结果。
还有 set  @mssql=@mssql + ' Group by Branchs.BranchCode,BranchName'
少了空格

[ 本帖最后由 bygg 于 2010-7-29 17:27 编辑 ]
#3
等待冰柠檬2010-07-29 19:51
不是这个问题吧?改了还是一样。。 不应该是分组

[ 本帖最后由 等待冰柠檬 于 2010-7-29 20:15 编辑 ]
#4
bygg2010-07-29 21:04
你的存储过程与SQL都是用的同样的分组,所以不应该是这个问题。
而应该是你传入的参数不一样,你跟踪一下看你调用存储过程时传入的参数是什么。
#5
等待冰柠檬2010-07-29 21:33
还有就是我想请问下
left join Orders on Orders.StartBranchCode = Branchs.BranchCode where 1 = 1
如果我不加where 1 = 1
数据显示5条
加了 只显示1条 就是截图的那条 什么原因?
#6
bygg2010-07-29 22:35
where 1 = 1这个并不会影响条件的啊
但是前面有left join ,估计与这个有影响,嘿嘿,猜的
#7
等待冰柠檬2010-07-30 07:55
请问版主有QQ么?加下我好么?我短信发给你了
#8
等待冰柠檬2010-07-30 08:42
解决了!
只有本站会员才能查看附件,请 登录

日期放到位置
一个是放在on
一个是放在where
1