select p.fisrespposition from T_ORG_Position p , T_PM_USER u, T_ORG_PositionMember m
where p.fid=m.fpositionid and u.fid=m.fpersonid 
and u.fid='rhyVpxOXQmuu22PFNCRuDRO33n8='RT,怎么查不出来结果呢

解决方案 »

  1.   

    SELECT
        p.fisrespposition
    FROM
        T_ORG_Position p,
        T_PM_USER u,
        T_ORG_PositionMember m
    WHERE
        p.fid = m.fpositionid
        AND u.fid = m.fpersonid
        AND u.fid = 'rhyVpxOXQmuu22PFNCRuDRO33n8=' 
    --#1.看一下fid是不是nvarchar, 是的话加N''
    --#2.语法没问题,注意自己的逻辑.自己单独查询一下吧
    SELECT * FROM T_PM_USER WHERE fid = 'rhyVpxOXQmuu22PFNCRuDRO33n8='
    SELECT * FROM T_ORG_PositionMember WHERE fpersonid = 'rhyVpxOXQmuu22PFNCRuDRO33n8='
    SELECT * FROM T_ORG_Position WHERE fid IN
    (
    SELECT fpositionid FROM T_ORG_PositionMember WHERE fpersonid = 'rhyVpxOXQmuu22PFNCRuDRO33n8='
    )
      

  2.   

    没有发现语法问题,可通过下面方法验证三表间的数据关系
    --step 1  关联T_PM_USER,T_ORG_PositionMember 是否存在要求的记录
    select m.* into #temp_1 from  T_PM_USER u inner join  T_ORG_PositionMember m
    on u.fid=m.fpersonid  
    where u.fid='rhyVpxOXQmuu22PFNCRuDRO33n8='
    --step 2 显示符合要求的数据,如不要求数据,则是上述两表就不存在这样的数据
    select * from #temp_1--step 3 借助中间表#temp_1,验证三表关系
    select p.fisrespposition from #temp_1 a inner join T_ORG_Position p
    on p.fid=a.fpositionid
      

  3.   

    结果是有,就是这语句查不出来
    select fisrespposition from T_ORG_Position p 
    where p.fid in
    (select fpositionid from T_ORG_PositionMember m where m.fpersonid in
    (select fpersonid from T_PM_USER where fid=''rhyVpxOXQmuu22PFNCRuDRO33n8='))
    我又写成这样了,查出来了,问题在哪呢
      

  4.   


    你这个语句里的联结条件是
    p.fid=m.fpositionid
    and m.fpersonid=u.fpersonid
    跟你最开始的联结条件p.fid=m.fpositionid and u.fid=m.fpersonid  是不一样的
      

  5.   

    你提问的时候,你的三表联结两个条件之间,都没有相同的字段,联结不起来,后面这个子查询就对了,所以你的语句应该是select p.fisrespposition from T_ORG_Position p , T_PM_USER u, T_ORG_PositionMember m
    where p.fid=m.fpositionid
    and m.fpersonid=u.fpersonid
    and u.fid='rhyVpxOXQmuu22PFNCRuDRO33n8='