luiszhu 发表于 2014-08-18 12:11

写一个函数要求如下!mysql 表。

我有一个表里面有员工和老板信息,现在想输入老板名,返回属于此老板的所有员工。比如输入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

q1208c 发表于 2014-08-18 13:39

递归的?

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

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

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

luiszhu 发表于 2014-08-18 15:25

用python来完成,mysql不支持函数循环调用。

Hadron74 发表于 2014-08-18 16:00

table="""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
"""

from collections import defaultdict
import re
s_e=defaultdict(list)

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


def get_e(a):
    if a in s_e:
      rst = s_e[:]
      for x in s_e:
            rst += get_e(x)
      return rst
    else:
      return []

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

luiszhu 发表于 2014-08-18 16:43

我的表很大,能不导出表直接连数据库查吗?
回复 4# Hadron74


   

Hadron74 发表于 2014-08-18 16:50

回复 5# luiszhu

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

Hadron74 发表于 2014-08-18 17:01

回复 5# luiszhu

查了一个网上纯mySQL的解决方案,也许对你有用:
http://www.2cto.com/database/201209/152513.html
   
页: [1]
查看完整版本: 写一个函数要求如下!mysql 表。