三张表,
一张user_profile用户表,
user_manage上下级管理表,
weekly_report用户周报表,
user_manage里面的两个字段都是user_profile里面的id,
weekl_report里面有个user_profile的id字段,
查询出user_manage里面的当前管理者的下级的周报,也要查出当前管理者自己的周报user_profile的user_oid是主键
mysql> desc user_profile;
+----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| USER_OID | decimal(38,0) | NO | PRI | NULL | |
| USER_NAME | varchar(50) | NO | | NULL | |
| DISPLAY_NAME | varchar(50) | NO | | NULL | |
| LOGIN_ID | varchar(20) | NO | | NULL | |
| LOGIN_PASSWORD | varchar(150) | NO | | NULL | |
| EMAIL | varchar(100) | NO | | NULL | |
| IS_ACTIVE | char(1) | NO | | NULL | |
| CREATE_DATE | datetime | NO | | NULL | |
| UPDATE_DATE | datetime | YES | | NULL | |
| ACTOR | varchar(20) | NO | | NULL | |
| ACTION_TYPE | varchar(20) | NO | | NULL | |
| ACTION_DATE | datetime | NO | | NULL | |
+----------------+---------------+------+-----+---------+-------+
12 rows in set (0.02 sec)
user_manage里面的manage_user与employee_user都是user_profile里面的主键
mysql> desc user_manage;
+---------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+---------+-------+
| MANAGER_USER | decimal(38,0) | NO | MUL | NULL | |
| EMPLOYEE_USER | decimal(38,0) | NO | MUL | NULL | |
+---------------+---------------+------+-----+---------+-------+
2 rows in set (0.02 sec)
weekly_reprot里面的reprot_oid是主键,user_oid是user_profile里面的主键
mysql> desc weekly_report;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| REPORT_OID | decimal(38,0) | NO | PRI | NULL | |
| REPORT_NAME | varchar(100) | NO | | NULL | |
| FROM_DATE | datetime | NO | | NULL | |
| END_DATE | datetime | NO | | NULL | |
| USER_OID | decimal(38,0) | NO | MUL | NULL | |
| CTRL_STATUS | char(1) | NO | | NULL | |
| CREATE_DATE | datetime | NO | | NULL | |
| UPDATE_DATE | datetime | YES | | NULL | |
| ACTOR | varchar(32) | NO | | NULL | |
| ACTION_TYPE | varchar(20) | NO | | NULL | |
| ACTION_DATE | datetime | NO | | NULL | |
+-------------+---------------+------+-----+---------+-------+
11 rows in set (0.03 sec)
一张user_profile用户表,
user_manage上下级管理表,
weekly_report用户周报表,
user_manage里面的两个字段都是user_profile里面的id,
weekl_report里面有个user_profile的id字段,
查询出user_manage里面的当前管理者的下级的周报,也要查出当前管理者自己的周报user_profile的user_oid是主键
mysql> desc user_profile;
+----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| USER_OID | decimal(38,0) | NO | PRI | NULL | |
| USER_NAME | varchar(50) | NO | | NULL | |
| DISPLAY_NAME | varchar(50) | NO | | NULL | |
| LOGIN_ID | varchar(20) | NO | | NULL | |
| LOGIN_PASSWORD | varchar(150) | NO | | NULL | |
| EMAIL | varchar(100) | NO | | NULL | |
| IS_ACTIVE | char(1) | NO | | NULL | |
| CREATE_DATE | datetime | NO | | NULL | |
| UPDATE_DATE | datetime | YES | | NULL | |
| ACTOR | varchar(20) | NO | | NULL | |
| ACTION_TYPE | varchar(20) | NO | | NULL | |
| ACTION_DATE | datetime | NO | | NULL | |
+----------------+---------------+------+-----+---------+-------+
12 rows in set (0.02 sec)
user_manage里面的manage_user与employee_user都是user_profile里面的主键
mysql> desc user_manage;
+---------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+---------+-------+
| MANAGER_USER | decimal(38,0) | NO | MUL | NULL | |
| EMPLOYEE_USER | decimal(38,0) | NO | MUL | NULL | |
+---------------+---------------+------+-----+---------+-------+
2 rows in set (0.02 sec)
weekly_reprot里面的reprot_oid是主键,user_oid是user_profile里面的主键
mysql> desc weekly_report;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| REPORT_OID | decimal(38,0) | NO | PRI | NULL | |
| REPORT_NAME | varchar(100) | NO | | NULL | |
| FROM_DATE | datetime | NO | | NULL | |
| END_DATE | datetime | NO | | NULL | |
| USER_OID | decimal(38,0) | NO | MUL | NULL | |
| CTRL_STATUS | char(1) | NO | | NULL | |
| CREATE_DATE | datetime | NO | | NULL | |
| UPDATE_DATE | datetime | YES | | NULL | |
| ACTOR | varchar(32) | NO | | NULL | |
| ACTION_TYPE | varchar(20) | NO | | NULL | |
| ACTION_DATE | datetime | NO | | NULL | |
+-------------+---------------+------+-----+---------+-------+
11 rows in set (0.03 sec)
你参考一下:查询出 user_manage里面的当前管理者的下级的周报:
select T1.*
from weekly_report as T1 left join user_manage as T2
on T1.user_oid = T2.employee_user
where T2.manage_user = <当前管理者的ID>查出当前管理者自己的周报:
select *
from weekly_report
where user_oid = <当前管理者的ID>
查询出 user_manage里面的当前管理者的下级的周报的同时查出当前管理者自己的周报:
select T1.*
from weekly_report as T1 left join user_manage as T2
on T1.user_oid = T2.employee_user
where T2.manage_user = <当前管理者的ID> or T1.user_oid = <当前管理者的ID>
from weekly_report as T1 left join user_manage as T2
on T1.user_oid = T2.employee_user
where T2.manage_user = <当前管理者的ID>
union allselect *
from weekly_report
where user_oid = <当前管理者的ID>
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。