问题:
    有一个记录表 tbl_record, 字段: id,jilu,userbm;记录表里有记录数和记录人员的编码 userbm ;和tbl_user 想关联, id,bm,name ;
现在要求查询 人员曾经 记录 的次 数,同时把该人员的名字查询出来 select COUNT(tbl_record.id) as sl,tbl_user.name as username from tbl_kq_record left join tbl_dd on tbl_kq_record.dd=tbl_user.bm group by tbl_kq_record.dd 
这样写不可以,因为我用到了左连接, 这个tbl_record 里面的 人员编码 可能在 tbl_user 里面已经删除,所以用到了左连接,遇到这样没有的 人员编码,查询人员记录为null 就可以,但是用左连接就出先以下问题:列 'tbl_user.name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。谢谢,各位来帮下吧。

解决方案 »

  1.   

    上面的语句有 记录表统一为 tbl_record select COUNT(tbl_record.id) as sl,tbl_user.name as username from tbl_record left join tbl_dd on tbl_record.dd=tbl_user.bm group by tbl_record.dd 
      

  2.   

    LZ的sql我感觉有点乱,根据你提示的信息,如下:
    select COUNT(a.*) ,b.name from tbl_kq_record a left join tbl_user b on a.userbm=b.bm group by a.userbm
    试试
      

  3.   


    with A as(
    select 1 id,1 jilu,'a' userbm
    union
    select 2 ,1 ,'a'
    union
    select 3 ,2 ,'b'
    union
    select 4 ,3 ,'c'
    ),B AS(
      SELECT 1 id,'a' bm,'a1' NAME
      union
      SELECT 2 id,'b' bm,'b1'
    )
    select B.name,count(a.id) FROM A
    LEFT JOIN B ON A.userbm=B.bm
    GROUP BY B.NAME楼主是对的,只是把tbl_user写成了tbl_dd
      

  4.   


    NULL 1
    a1 2
    b1 1
      

  5.   

    还是不行啊。 
    select COUNT(a.*) ,b.name from tbl_record a left join tbl_user b on a.userbm=b.bm group by a.userbm 这个语句 ,执行的时候说 :列 'b.name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
    4楼的:
    hyrongg
    你是怎么得出来的啊? 特别是你的语句,那么是怎么个意思啊?
     
     
      

  6.   

    select tbl_user.name,count(tbl_user.name) from (select tbl_user.name FROM
    tbl_user LEFT JOIN tbl_record ON tbl_record.id=tbl_user.id where tbl_user.name is not null) group bytbl_user.name