具有挑战性的SQL 语句你会吗 ?
大虾们您们好,这个问题我不会。。特此求救。。
A(a1,a2,a3,abc) (主键a1,abc)
B (b1,b2,b3,abc) (主键b1,abc)
C (c1,c2,c3,a1) (主键c1,外键a1)
要求把A中的a1,a2,B中的b1,b2,C表中的c2同时放到一个临时表#p中去
上述操作是在Button1按钮中实现的,即点击Button1触发该存储过程
问题的关键是 我还有个Button2 它的作用是点击后,临时表中的全部数据
反映到一个控件上 如:FpSpread控件,Gridview控件等
能够在控件上调出临时表中的数据吗 ?如果不能有什么好方法吗
(用存储过程实现)
谢谢大虾们光临。再次感谢
------解决方案--------------------select a.a1,a.a2,b.b2,b.b2,c.c2 into #p
from a inner join b on a.abc=b.abc inner join c on c.a1=a.a1
既然你还有其他动作需要用到#p中的数据,那么建议在Button1取得#p时,放到缓存中,然后Button2直接可到缓存中取相应的数据,这样效率也会有提高
------解决方案--------------------点击Button1的时候触发该存储过程,为了避免麻烦,我把结果也返回了,所以用一个DataSet接返回值就好
比如:
SqlDataAdapter da = new SqlDataAdapter( "exec prco1 ",cnn)
DataSet ds = new DataSet
da.Fill(ds);
create proc prco1
as
select a1,a2,b1,b2,c2 into #tmpTable from A,B,C where a.abc = b.abc and a.a1 = c.a1
select * from tmpTable
GO
然后将ds保存到 ViewState中
ViewState[ "ds "] = ds;
点击Button2 的时候将ViewState中的ds绑定到GridView
------解决方案--------------------/***晕晕晕***/
Create Proc Proc_Test
As
If object_id( 'temp..# ') is not null
drop table #
select a.a1,a.a2,b.b2,b.b2,c.c2 into #
from a inner join b on a.abc=b.abc inner join c on c.a1=a.a1
Go
/*点Button1,调用一次存储过程,再点Button2,将临时表#的数据返回到你的控件上去就可以了*/