D****6 发帖数: 278 | 1 Table:
Employee {name, manager_name}
举例: A, B
B, C
C, D
写SQL, 给个manager_name 找出所有的下属:
eg. D 的下属是 C, B, A. C的下属是B, A
多谢! | h******3 发帖数: 351 | 2 co-ask.这个貌似用普通的statement,aggregator解决不了吧?
【在 D****6 的大作中提到】 : Table: : Employee {name, manager_name} : 举例: A, B : B, C : C, D : 写SQL, 给个manager_name 找出所有的下属: : eg. D 的下属是 C, B, A. C的下属是B, A : 多谢!
| B*****g 发帖数: 34098 | 3 look connect by if question is for oracle
【在 D****6 的大作中提到】 : Table: : Employee {name, manager_name} : 举例: A, B : B, C : C, D : 写SQL, 给个manager_name 找出所有的下属: : eg. D 的下属是 C, B, A. C的下属是B, A : 多谢!
| d**e 发帖数: 6098 | 4 oracle下面是:
select name
from employee
start with manager = 'D'
connect by prior name = manager;
select lpad(' ', 2 * (level-1)) || name names
from employee
start with manager = 'D'
connect by prior name = manager;
【在 D****6 的大作中提到】 : Table: : Employee {name, manager_name} : 举例: A, B : B, C : C, D : 写SQL, 给个manager_name 找出所有的下属: : eg. D 的下属是 C, B, A. C的下属是B, A : 多谢!
| h******3 发帖数: 351 | 5 mySQL 里边好象没有一个start with syntax.
【在 d**e 的大作中提到】 : oracle下面是: : select name : from employee : start with manager = 'D' : connect by prior name = manager; : select lpad(' ', 2 * (level-1)) || name names : from employee : start with manager = 'D' : connect by prior name = manager;
| d**e 发帖数: 6098 | 6 sorry...总是记了说是oracle的。
【在 h******3 的大作中提到】 : mySQL 里边好象没有一个start with syntax.
| w*****1 发帖数: 245 | | h**e 发帖数: 13 | 8 普通SQL估计一个statement写不出来吧?
可以用with recursive statement (SQL server) |
|