初学SQL遇到一些问题,请大家赐教,如果问题太简单,请大家别笑.
问题一:
如果让2个表的数据联系起来,比如说
A表里有
姓名 年龄 编号 成绩
张 18 001 90
李 20 002 80
B表里有
编号 成绩
001 90
002 80
现在修改B表里的编号或者成绩,A表也跟着修改,这样的应该怎么做?
问题二:
一个存储过程
create proc 工资查询 @职员姓名 char(10)='',@日期 char(10)=''
as
begin
if @职员姓名='' and @日期=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号
return
end
else
if @职员姓名!='' and @日期=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 职员信息表.职员姓名=@职员姓名
return
end
else
if @职员姓名='' and @日期!=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 工资发放历史表.日期=@日期
return
end
else
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 工资发放历史表.日期=@日期 and 职员信息表.职员姓名=@职员姓名
return
end
end
我在C#里连接操作数据库
SqlConnection conn=new SqlConnection("server=.;database=人力资源管理系统;uid=sa;pwd=;");
try
{
conn.Open();
SqlCommand comm=new SqlCommand("工资查询",conn);
comm.CommandType=CommandType.StoredProcedure;
comm.Parameters.Add("@职员姓名",textBox1.Text);
comm.Parameters.Add("@日期",textBox2.Text);
SqlDataAdapter sda=new SqlDataAdapter(comm);
DataSet ds=new DataSet();
sda.Fill(ds);
dataGrid1.DataSource=ds.Tables["工资发放"].DefaultView;
}
catch(Exception M)
{MessageBox.Show(M.Message);}
他却不行,请大家帮帮,先谢谢大家了,十万火急,在线等
问题一:
如果让2个表的数据联系起来,比如说
A表里有
姓名 年龄 编号 成绩
张 18 001 90
李 20 002 80
B表里有
编号 成绩
001 90
002 80
现在修改B表里的编号或者成绩,A表也跟着修改,这样的应该怎么做?
问题二:
一个存储过程
create proc 工资查询 @职员姓名 char(10)='',@日期 char(10)=''
as
begin
if @职员姓名='' and @日期=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号
return
end
else
if @职员姓名!='' and @日期=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 职员信息表.职员姓名=@职员姓名
return
end
else
if @职员姓名='' and @日期!=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 工资发放历史表.日期=@日期
return
end
else
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 工资发放历史表.日期=@日期 and 职员信息表.职员姓名=@职员姓名
return
end
end
我在C#里连接操作数据库
SqlConnection conn=new SqlConnection("server=.;database=人力资源管理系统;uid=sa;pwd=;");
try
{
conn.Open();
SqlCommand comm=new SqlCommand("工资查询",conn);
comm.CommandType=CommandType.StoredProcedure;
comm.Parameters.Add("@职员姓名",textBox1.Text);
comm.Parameters.Add("@日期",textBox2.Text);
SqlDataAdapter sda=new SqlDataAdapter(comm);
DataSet ds=new DataSet();
sda.Fill(ds);
dataGrid1.DataSource=ds.Tables["工资发放"].DefaultView;
}
catch(Exception M)
{MessageBox.Show(M.Message);}
他却不行,请大家帮帮,先谢谢大家了,十万火急,在线等
解决方案 »
- reporting service 参数设置问题
- sql2000能不能把数据库备份到网络上其它的电脑上?
- 怎么获取sqlserver某张表中日期列里的日期并排序
- SQL和T-SQL有什么区别?
- 请教大家:到底“什么是Microsoft Jet”?“什么是Microsoft Jet SQL”?其中的“Jet”是什么意思?
- 请教行转换成列的小小的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 请熟悉SQL的朋友进来看看. 逻辑有点复杂。谢谢!
- 怎么检索空字符啊
- 高手请进》》》》》》》》》》》》》》》》》》》》
- 急,硬盘被格,数据库用数据恢复软件恢复但无法使用!!
- 老大们,如何把SQL数据上传到WEB空间呢?
- 创建SQL登录帐号却不能进行登录????
如果让2个表的数据联系起来,比如说
A表里有
姓名 年龄 编号 成绩
张 18 001 90
李 20 002 80
B表里有
编号 成绩
001 90
002 80
现在修改B表里的编号或者成绩,A表也跟着修改,这样的应该怎么做?
create trigger B_change on B
for update
as
update A set 编号 = updated.编号, 成绩 = updated.成绩 from A inner join deleted c on A.编号 = c.编号
改为
dataGrid1.DataSource=ds.Tables[0].DefaultView;
试试
楼主的问题添加一个级联更新就行了
create proc 工资查询 @职员姓名 char(10)='',@日期 char(10)=''
as
begin
if @职员姓名='' and @日期=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号
return
end
else--去掉
if @职员姓名!='' and @日期=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 职员信息表.职员姓名=@职员姓名
return
end
else--去掉
if @职员姓名='' and @日期!=''
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 工资发放历史表.日期=@日期
return
end
else
begin
select 职员信息表.职员姓名,工资发放历史表.* from 职员信息表 inner join 工资发放历史表 on 职员信息表.职员编号=工资发放历史表.职员编号 and 工资发放历史表.日期=@日期 and 职员信息表.职员姓名=@职员姓名
return
end
end
for update
as
if update(成绩)
begin
update tableb set 成绩=a.成绩 from tablea,inserted a where tableb.编号=a.编号
end
偶写了几个这方面的列子
http://blog.csdn.net/roy_88
http://blog.csdn.net/roy_88/archive/2006/12/01/1424370.aspx