首页 新闻 会员 周边 捐助

sql多表联合查询语句该怎么写

0
悬赏园豆:20 [已解决问题] 解决于 2015-10-16 16:27

如题,看看这个语句分页要怎么写

SELECT TOP 10 A.User_Code,A.User_Sex,C.PropertyInstance_Value,A.PhoneNo FROM Base_UserInfo A,
Base_UserRole B,

Base_AppendPropertyInstance C

WHERE A.User_ID=B.User_ID AND

B.User_ID=C.PropertyInstance_Key AND

C.Property_Control_ID='ChatName'

jinggege的主页 jinggege | 初学一级 | 园豆:5
提问于:2015-10-16 15:14
< >
分享
最佳答案
0
DECLARE @pageSize INT =10, @pageIndex INT=1

SELECT * FROM (
    SELECT 
        ROW_NUMBER() OVER(ORDER BY User_ID) AS rowNum,
        A.User_Code,
        A.User_Sex,
        C.PropertyInstance_Value,
        A.PhoneNo 
    FROM Base_UserInfo A,Base_UserRole B,Base_AppendPropertyInstance C
    WHERE 
        A.User_ID=B.User_ID 
        AND B.User_ID=C.PropertyInstance_Key 
        AND C.Property_Control_ID='ChatName'
) AS tb
WHERE tb.rowNum BETWEEN @pageIndex-1 * @pageSize AND @pageIndex * @pageSize
收获园豆:20
李丶GuanYao | 小虾三级 |园豆:1228 | 2015-10-16 15:59

再问一句,我要怎么返回总条数,我好分页

jinggege | 园豆:5 (初学一级) | 2015-10-16 16:29

@jinggege: 

参数那里加上一个输出参数. 

例如 @recordsCount INT OUTPUT 

然后输出之前.把recordsCount 赋值.  

例如 Select @recordsCount=Count(1) from tb

后台执行完存储过程之后. 获取@recordsCount 参数的值.就可以了.

例如:Int32.Parse(cmd.Parameters["@RecordsCount"].Value.ToString())

cmd 是Command对象。

李丶GuanYao | 园豆:1228 (小虾三级) | 2015-10-16 16:39

@李丶GuanYao: 我查询后返回的是DataTable,这个要怎么取总条数

jinggege | 园豆:5 (初学一级) | 2015-10-16 17:07

@jinggege: 

你执行存储过程的时候. 肯定有Comman对象吧. 然后还要有一个输出参数.例如叫@RecordsCount.

var count=Int32.Parse(Comman.Parameters["@RecordsCount"].Value.ToString())

这样就获取出来了.

你如果要传到前台去. 你要在方法参数那里使用ref 或者out 将count 值传到前台去.

李丶GuanYao | 园豆:1228 (小虾三级) | 2015-10-16 17:11
其他回答(2)
0

有一种分页叫 row_number

webaspx | 园豆:1973 (小虾三级) | 2015-10-16 15:20
0
Yurbin | 园豆:76 (初学一级) | 2015-10-16 15:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册