A表
pact_id    pact_name    user_id(签约人)
    1     XX经济合同       1
    2     XX民事合同       2
    3     XX保密合同       1
    ...    ...
B表
user_id   user_name  user_dept
   1       小王        市场部
   2       朱强        开发部
   3       小伍        美工部
   ...     ...         ... 
现在我想实现这样的搜索
按user_id(签约人)所在的部门查询A表中的数据,请问如何写SQL?
谢谢各位大侠

解决方案 »

  1.   

    select a.* 
    from a 
    where user_id in 
    (
        select user_id 
        from b 
        where user_dept in (
            select user_dept
            from b 
            where [user_id]=1)
    )
      

  2.   

    请大家帮我看看:
    declare @sql nvarchar(4000)
    SET @SQL2 =''
    if (@user_dept<>0)
    SET @sql2 = @sql2+ 'and  b.user_dept ='+Convert(varchar(5),@user_dept)+''
    SET @SQL ='SELECT   A.*,
    FROM B表 B INNER JOIN A表 A on a.user_id = b.user_id
     where pact_id not in (select top ' + cast((15*(@intCurrentPageIndex-1)) as varchar(10))+'    pact_id from  A表   A where 1=1' +@sql2+' order by  pact_id desc)' +@sql2+' order by  pact_id desc'
    这样虽然能实现按部门查询,但翻页时,就会出现查询条数错误的情况.
      

  3.   

    select b.* from B表 a left join A表 b on a.[user_id]=b.[user_id]
      

  4.   

    select b.* from B表 a left join A表 b on a.[user_id]=b.[user_id] where ???
      

  5.   

    你把 @SQL print 出来自己看看嘛
    把execute(@SQL) 变成 print(@SQL)然后执行先看看