ARoleFunction表:
FunctionCode   RoleCode
A0001          Admin
A0002        AdminAFunction表:
FunctionCode   ModuleName  FunctionNameA0001        SysAdmin    FrmUserInfo
M0002        Master      FrmAdd
A0002        SysAdmin    FrmUserMgr
A0003        StsAdmin    Frm
A0004          StsAdmin    Frm1我想得出这样的结果:
FunctionName   RoleCode    FlagFrmUserInfo    Admin       1
FrmUserMgr     Admin       1
Frm            Admin       0
Frm1           Admin       0

解决方案 »

  1.   

    select a.functionName,b.roleCode,count(*) from AFunction a left join ARoleFunction b
    on a.FunctionCode    = b.FunctionCode   
      

  2.   

    加上group by a.functionName,b.roleCode
      

  3.   

    select FunctionName,'Admin' as RoleCode,case when b.RoleCode = 'Admin' then 1 else 0 end as Flag
    from AFunction a left join ARoleFunction b
    on a.FunctionCode=b.FunctionCode
      

  4.   

    Flag从哪里来?select AFunction.FunctionName,ARoleFunction.RoleCode from AFunction left outer join ARoleFunction on AFunction.FunctionCode=ARoleFunction.FunctionCode
      

  5.   

    楼上2位,你们把
    M0002    Master    FrmAdd
    也查出来了。。
      

  6.   

    where 条件是 RoleCode=Admin;  急啊,大家帮帮忙啊
      

  7.   

    那再加个判断就可以了啊
    where a.ModuleName <>'master'
      

  8.   

    你的Flag是什么东西,要代表什么意思???
      

  9.   

    select FunctionName,'Admin' as RoleCode,case when b.RoleCode = 'Admin' then 1 else 0 end as Flag
    from AFunction a left join ARoleFunction b
    on a.FunctionCode=b.FunctionCode
    where a.ModuleName  <>'master'
      

  10.   

    那你加一个 where ModuleName  ='SysAdmin'不就可以了,一点脑子都没有吗?
      

  11.   

    谢谢大家了,但这个sql语句没满足我的需求,不过我可以参考大家的例子来改改了。。
    谢谢