免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1796 | 回复: 6

写一个函数要求如下!mysql 表。 [复制链接]

论坛徽章:
0
发表于 2014-08-18 12:11 |显示全部楼层
我有一个表里面有员工和老板信息,现在想输入老板名,返回属于此老板的所有员工。比如输入Z, 下面有W,X,Y, 他们下面又有各自员工。要求返回结果15.

EMP_NAME        SUP_NAME
A        Y
B        Y
C        Y
D        Y
E        X
F        X
G        X
H        X
I        X
J        W
K        W
L        W
W        Z
X        Z
Y        Z

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2014-08-18 13:39 |显示全部楼层
递归的?

你是要用python来完成, 还是用mysql本身来完成?

如果是python, 一层层取就啦.

mysql的话, 我不知道这个循环要怎么写了.

论坛徽章:
0
发表于 2014-08-18 15:25 |显示全部楼层
用python来完成,mysql不支持函数循环调用。

论坛徽章:
0
发表于 2014-08-18 16:00 |显示全部楼层
  1. table="""EMP_NAME        SUP_NAME
  2. A        Y
  3. B        Y
  4. C        Y
  5. D        Y
  6. E        X
  7. F        X
  8. G        X
  9. H        X
  10. I        X
  11. J        W
  12. K        W
  13. L        W
  14. W        Z
  15. X        Z
  16. Y        Z
  17. """

  18. from collections import defaultdict
  19. import re
  20. s_e=defaultdict(list)

  21. p = re.compile("(\S+)\s*(\S+)\n",re.M)
  22. for e,s in p.findall(table):
  23.     s_e[s].append(e)


  24. def get_e(a):
  25.     if a in s_e:
  26.         rst = s_e[a][:]
  27.         for x in s_e[a]:
  28.             rst += get_e(x)
  29.         return rst
  30.     else:
  31.         return []

  32. print "Z:", get_e("Z")
  33. print "X:", get_e("X")
复制代码
回复 1# luiszhu
  1. C:\Python27\python.exe C:/workspace/untitled/s_e.py
  2. Z: ['W', 'X', 'Y', 'J', 'K', 'L', 'E', 'F', 'G', 'H', 'I', 'A', 'B', 'C', 'D']
  3. X: ['E', 'F', 'G', 'H', 'I']
复制代码

论坛徽章:
0
发表于 2014-08-18 16:43 |显示全部楼层
我的表很大,能不导出表直接连数据库查吗?
回复 4# Hadron74


   

论坛徽章:
0
发表于 2014-08-18 16:50 |显示全部楼层
回复 5# luiszhu

道理一样呀,只要把从词典查询的语句改成mysqldb的执行"SELCET ..."再对检索结果进行分析,进行递归就行了。
   

论坛徽章:
0
发表于 2014-08-18 17:01 |显示全部楼层
回复 5# luiszhu

查了一个网上纯mySQL的解决方案,也许对你有用:
http://www.2cto.com/database/201209/152513.html
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP