新手问题,在线等
初学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);}
他却不行,请大家帮帮,先谢谢大家了,十万火急,在线等
------解决方案--------------------dataGrid1.DataSource=ds.Tables[ "工资发放 "].DefaultView;
改为
dataGrid1.DataSource=ds.Tables[0].DefaultView;
试试
------解决方案--------------------alter table B表 add constraint B表_con foreign key(编号)references A表(编号) on update cascade
楼主的问题添加一个级联更新就行了
------解决方案--------------------去掉两个else
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 职员信息表.职员编号=工资发放历史表.职员编号 an