SQL多表查询

heren5201314 2011-01-05 04:14:13
有个监护数据列表:要根据姓名、开始日期、结束日期来查询一张表!而姓名是另一张表的字段!监护数据表里面有这个表的外键!
现要求如果输入姓名就只根据姓名来查,如果输入了两项比如姓名何开始日期,就要根据这两项来查,如果全部输入就按照三个条件来查询! 怎么查询? 要个SQL语句,谢谢! 各位可以当A是监护列表,B是用户列表!
...全文
167 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws02060794 2011-01-05
  • 打赏
  • 举报
回复
select 语句后面加条件查询where 你的三个字段 不就可以了么?
ruiruiy 2011-01-05
  • 打赏
  • 举报
回复
select name from tb_name left join tb_监护表 on tb_name.name = tb_监护表.name
heren5201314 2011-01-05
  • 打赏
  • 举报
回复
你们就告诉我怎么根据姓名来查询监护数据表就可以了!
vina 2011-01-05
  • 打赏
  • 举报
回复
就多表查询:
1.inner join
2.left join
3.right join
...
kshuangshuzhen 2011-01-05
  • 打赏
  • 举报
回复
正解。就看LZ的表结构是否一至
[Quote=引用 7 楼 sxiaohui8709253 的回复:]
have a try

SQL code

create proc proc1
@姓名 varchar(50),@开始日期 varchar(10),@结束日期 varchar(10)
as
begin
declare @sql varchar(1000)
set @sql='select * from A where 1=1'
if @姓名<>''
begin
set @s……
[/Quote]
  • 打赏
  • 举报
回复
return NND 这也能打错。。。
  • 打赏
  • 举报
回复
       
public DataSet UserInfoSelect(string name, DateTime dt1,DateTime dt2)
{
string sqlstr = @"SELECT 监护字段 FROM tb1 where 1=1";
if (name!= "")
{
sqlstr = sqlstr + " and userid in (select id from tb2 where name ='"+name+"');
if (dt1!= null && dt2!= null)
{
sqlstr = sqlstr + " and date between '"+dt1+"' and '"+dt2+"'";
}
retirn ...;
}
sxiaohui8709253 2011-01-05
  • 打赏
  • 举报
回复
sql语句那就自己拼呗 很简单撒,上面我那个存储过程你会的话 sql语句也会吧
基本语句还是
select * from B where 1=1
然后来啥条件直接拼接and就可以了
比如
string sql="select * from B where 1=1";
if(!txtName.Text.Trim().Equals(String.Empty))
{
sql+=" "+"and nameid =(select id from B where name='"+txtName.Text.Trim()+"')";
}
if(!StartDate........)
{
sql+=...
}
if{...}
SqlHelper.ExecuteDataTable(sql);
sxiaohui8709253 2011-01-05
  • 打赏
  • 举报
回复
have a try

create proc proc1
@姓名 varchar(50),@开始日期 varchar(10),@结束日期 varchar(10)
as
begin
declare @sql varchar(1000)
set @sql='select * from A where 1=1'
if @姓名<>''
begin
set @sql=@sql+' '+'and 性名ID in(select ID from B where 姓名='''+@姓名+''')'
end
if @开始日期<>''
begin
set @sql=@sql+' '+'and 开始日期='''+@开始日期+''''
end
if @结束日期<>''
begin
set @sql=@sql+' '+'and 结束日期='''+@结束日期+''''
end
exec(@sql)
end
cecillray 2011-01-05
  • 打赏
  • 举报
回复
那就只能在代码里面自己拼接SQL语句了撒
string sql="select * from tableName where 1=1";
if(姓名!="")
{
sql+=" and name='"+姓名+"'";
}
if(开始日期!=null)
{
sql+=" and startTime>开始日期"
}
if(结束日期!=null)
{
sql+=" and entTime<结束日期"
}
就这样啊,拼接字符串而已
heren5201314 2011-01-05
  • 打赏
  • 举报
回复
存储过程不行要SQL语句@! 测试数据可以自己模Y
sxiaohui8709253 2011-01-05
  • 打赏
  • 举报
回复
存储过程行不?
sxiaohui8709253 2011-01-05
  • 打赏
  • 举报
回复
给出表结构 和需求 最好给点测试数据
heren5201314 2011-01-05
  • 打赏
  • 举报
回复

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧