北方站长站
客服热线:0632-5117766

实例讲解一个不用游标就可以实现的问题

[2008-01-23 04:58:00] 作者:30963 来源:北方站长站

Tags:可以 实现 问题 不用 讲解 一个 实例 ALLSELECT UNION

  

问题:假如有两个表a(aid,bid),b(bid,bname,bprice)

a的字段表示顾客ID和商品ID,一个顾客可以买多种商品

现在a有记录:

1,101,111,122,102,13

b的字段表示商品ID,商品名称,商品价格

现在b有记录:

10,aaa,111,bbb,212,ccc,313,ddd,4

现在要实现显示顾客买的商品名称和价钱即字段:

aid,bname,bprice

但是同一个顾客只保留一个ID,其他为null

应当如何实现?

即将上面的记录实现为以下内容:

1,aaa,1,bbb,2,ccc,32,aaa,1,ddd,4

以上这个示例如果不用游标有办法实现吗?

具体解决方法如下:

CREATE TABLE #T1(aid int ,bid int)INSERT INTO #T1SELECT 1,10 UNION ALLSELECT 1,11 UNION ALLSELECT 1,12 UNION ALLSELECT 2,10 UNION ALLSELECT 2,13CREATE TABLE #T2(bid int,bname nvarchar(10),bprice int)INSERT INTO #T2SELECT 10,''aaa'',1 UNION ALLSELECT 11,''bbb'',2 UNION ALLSELECT 12,''ccc'',3 UNION ALLSELECT 13,''ddd'',4SELECT A.aid,B.bname,B.bprice INTO #T3 FROM #T1 AS A LEFT OUTER JOIN #T2 AS B ON A.bid=B.bidDECLARE @aid int ,@lastaid intUPDATE #T3 SET @aid=(CASE WHEN ISNULL(@lastaid,'''') =aid THEN NULL ELSE aid END),aid=@aid,@lastaid=aidSELECT * FROM #T3DROP TABLE #T1,#T2,#T3

结果如下:

/*1 aaa 1NULL bbb 2NULL ccc 32 aaa 1NULL ddd 4*/

(责任编辑:卢兆林)

 

News

 

info

 

down

出售手机裁听器,手机跟踪定位系统    企业网站,网城,购物网,都市导购,校园网    网上书店系统    上海电信机房服务器托管,双线主机托管    美女图片馆    15G 高清晰图片资源 无水印    室内装潢材料新产品杰威尔艺术漆    收一万ip的美女图片    大量收购个人网址导航网站    出售网址站PR=4alexa=119,764    

下一篇链接:教你快速解决“一个多对多”的疑难问题

上一篇链接:教你快速掌握两个分页存储过程的用法

评论】 【打印】 【加入收藏】 【关闭→论坛 →博客 →数据中心

 共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面