sql问题求助

session1983 2011-09-22 05:31:22

SELECT au.user_id, count(u.workno) AS tjs
FROM ecs_users AS u, ecs_admin_user AS au
WHERE au.workno = u.workno
AND au.action_list LIKE '%user_sales%'
GROUP BY au.user_id



结果是这样的:
user_id tjs
47 1
71 1
74 1
85 1
92 1
101 1

实际上还有另外两个user_id的,只是他们的count(u.workno)为0 但是这里没有显示出来。
我想让这两个也可以显示出来的。
例如:

user_id tjs
33 0
68 0
...全文
118 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
baoxiaohua 2011-10-03
  • 打赏
  • 举报
回复
那很负责的告诉楼主的,2楼的SQL语句完全可以达到你的需要


SELECT au.user_id, count(u.workno) AS tjs
FROM ecs_admin_user AS au LEFT JOIN ecs_users AS u
ON au.workno = u.workno GROUP BY au.user_id

上面这个就已经达到你的要求的,
只是你又多加了一个模糊查询au.action_list LIKE '%user_sales%',对ecs_admin_user表的action_list字段进行模糊匹配user_sales(不知道为什么要去搜索user_sales,还是说这个是$user_sales变量)
SELECT au.user_id, count(u.workno) AS tjs
FROM ecs_admin_user AS au LEFT JOIN ecs_users AS u
ON au.workno = u.workno AND au.action_list LIKE '%user_sales%'
GROUP BY au.user_id
gg_lihui 2011-10-03
  • 打赏
  • 举报
回复
为空时不会统计,先判断.改为非空.
SELECT au.user_id, count(nvl(u.workno,0)) AS tjs
FROM ecs_users AS u, ecs_admin_user AS au
WHERE au.workno = u.workno
AND au.action_list LIKE '%user_sales%'
GROUP BY au.user_id
session1983 2011-10-03
  • 打赏
  • 举报
回复
我再整理一下,两个表:
admin:user_id,workno

users:user_id,workno

admin中的workno和users中的workno是一对多的关系。打个比方就像是一个业务员,他名义下面肯定有1个或者多个的客户,当然也有可能某个业务员下面一个客户都没有。workno相当于是业务员的编号,比如users表中的workno=1,就表示属于admin表中workno=1的业务员的客户。现在就想获得每个业务员的编号,名义下面的客户数量。

比如admin表的记录如下:

user_id worko
2 1001
3 1003
5 1005


users表中的记录如下:

user_id workno

7 1003
8 1005
9 1005

我要实现的效果是:

user_id(admin表的user_id) number(客户数量)
2 0
3 1
5 2




baoxiaohua 2011-10-03
  • 打赏
  • 举报
回复
2楼的回答应该可以的呀

为什么2楼会认为不合题意,难道你们是同一人

楼主具体要求是什么
session1983 2011-10-03
  • 打赏
  • 举报
回复
还是没有符合要求的。
a403543627 2011-09-23
  • 打赏
  • 举报
回复
left join 正解。得到的是 NULL 输出时判断下就好
For_Ning 2011-09-23
  • 打赏
  • 举报
回复
你用的条件是:WHERE au.workno = u.workno
那另一个表没有workno 为0的 当然得不到啊
用做连接试试 left join
young5335 2011-09-23
  • 打赏
  • 举报
回复
SORRY,上面的回复不合题意
young5335 2011-09-23
  • 打赏
  • 举报
回复
SELECT au.user_id, count(u.workno) AS tjs
FROM ecs_admin_user AS au LEFT JOIN ecs_users AS u
ON au.workno = u.workno AND au.action_list LIKE '%user_sales%'
GROUP BY au.user_id
士元 2011-09-23
  • 打赏
  • 举报
回复
#不清楚为什么要做group by
SELECT
au.user_id,au.workno AS tjs
FROM
ecs_users AS u left join ecs_admin_user AS au
on
au.workno = u.workno
where
au.action_list LIKE '%user_sales%'
order BY
au.user_id,au.workno desc
session1983 2011-09-23
  • 打赏
  • 举报
回复
希望各位 可以贴出来 给我测试一下。谢谢。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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