我基本上要做的是运行查询,例如:
select a.*, b.*
from a
left outer join b on a.col2 = b.col2
where a.col1 = 3
获取一个包含两个表的数据集' a'和' b'填充。
例如,如果查询的返回值是:
a.col1 | a.col2 | b.col2 | b.col3
---------------------------------
3 | 33 | 33 | 1
3 | 33 | 33 | 2
我想要这两张桌子:
a.col1 | a.col2
---------------
3 | 33
b.col2 | b.col3
---------------
33 | 1
33 | 2
是否可以做,或者我需要阅读' a'首先是表格,然后生成查询' b'表过滤a.col2的值?
答案 0 :(得分:0)
你可以通过Executing multiple SQL statements as one against SQL Server
实现这个目标
将您的两个查询都放在字符串变量中,并在第一次查询后放置;
string _query ="select a.* from a where a.col1 = 3; Select b.* form b";
using (SqlDataAdapter a = new SqlDataAdapter(_query, connectionString))
{
/* Use DataAdapter to fill DataSet*/
DataSet ds = new DataSet();
a.Fill(ds);
}
注意:通过使用以下查询您将获得一个结果集,因为您将两个表连接到一个结果集中
select a.*, b.*
from a
left outer join b on a.col2 = b.col2
where a.col1 = 3
答案 1 :(得分:0)
您可以使用存储过程将两个表的结果检索为一个表
将结果存储在一个数据集中,并将其反映到您想要的位置。 //存储过程 创建程序spleftjoin @i int 如 开始 选择a。,b。 来自a 左外连接b在[a.col2] = [b.col1]上 其中[a.col1] = @i 结束 // i是a.col1的参数 asp.net代码拖动一个文本框,输入a.col1数字和gridview控件和一个按钮。复制按钮控件单击事件的代码 protected void btnLoad_Click(object sender,EventArgs e) { if(txtBox.Text =="") { Response.Write("请输入数字"); } 其他 { string cs = ConfigurationManager.ConnectionStrings [" dbcss"]。ConnectionString; SqlConnection con = new SqlConnection(cs); SqlDataAdapter da = new SqlDataAdapter(" spleftjoin",con); da.SelectCommand.CommandType = CommandType.StoredProcedure; int i = Convert.ToInt32(txtBox.Text); da.SelectCommand.Parameters.AddWithValue(" @ i",i); DataSet ds = new DataSet(); da.Fill(DS); GridView1.DataSource = ds.Tables [0]; GridView1.DataBind(); } }