当前位置:编程学习 > C#/ASP.NET >>

ACCESS的SQL语句如何得到这样的数据?应该怎么写,请大家帮忙

数据库为ACCESS,表A中存着一列编号,这列编号是表B中人员编号和表C中地址编号的混合体,现求一SQL语句,将表A中的编号对照表B,C归类。可能说的不太清楚:
表A:  编号:1,X,L,K,2,E,O,P,3,4,R...
-------------------------------------
表B:人员编号:    人员名称:
        1           张三
        2           李四
        3           王五
        4           等等
--------------------------------------
表C:地址编号:     地址:
        E           学校
        L           工厂
        K           地铁
        O           商场
        P           剧场
        R           饭店
        X           电影院
----------------------------------------
现在想对表A中的编号参照表B,C进行归类,结果保存至D表中:
表D   人员名称       地址
       张三          
                     电影院
                     工厂
                     地铁
       李四
                     学校
                     商场
                     剧场
       王五
       等等
                     饭店

---------------------------------------------
请问各位,想实现这样的操作应该怎么写SQL语句呢?或者有什么其他方法,请赐教,不胜感激 --------------------编程问答-------------------- up --------------------编程问答-------------------- 方案一,建议A表中的1,X,L,K,2,E,O,P,3,4,R...  在生成时改写成1,X,L,K;2,E,O,P;3;4,R...
即数字前用其他符号 ,这样就就可以用cs的split或 sql的语句(字符分割),再下面就可以继续处理了!


方案二,
可以建个临时表
declare @temp table(bmid int identity(1,1) not null,bm varchar(20), int bmbz,int lx)
然后用sql的 CHARINDEX  和 substring 分解字符串 ,然后 
insert into @temp(bm) values(@bm) 插入临时表中
然后写
update @temp set bmbz=bmid where bm in (select bh from B)

然后写游标循环(order by id),取变量@bmid,@bmbz
判断当前行 的 @bmbz 是否为空,不空则
select @oldbmbz= @bmbz 
update @temp set lx=0 where bmid=@bmid 
,如果@bmbz为空,则 
update @temp set bmbz=@oldbmbz,lx=1 where bmid=@bmid 

最后
select t1.bm,b.mc,t2.bm,c.dz @temp as t1 
left join @temp as t2 on t1.bmbz=t2.bmbz
join b on b.bh=t1.bm
join c on c.bh=t2.bm
where t1.lx=0 and t2.lx=1

最终结果应该是

张三                电影院
张三                    工厂
张三                    地铁
李四                   学校
李四                    商场
李四                    剧场
王五
等等                    饭店

http://www.mybuffet.cn
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,