三张表,
一张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)

解决方案 »

  1.   

    贴建表及插入记录的SQL,及要求结果出来看看
      

  2.   

    你这个当前管理者是一个输入吗?就当是一个需要输入的值吧。另外你这个问题是要一个语句查出还是分两个语句做?
    你参考一下:查询出 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>
      

  3.   

    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>
    union allselect * 
    from weekly_report
    where user_oid = <当前管理者的ID>
      

  4.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式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)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。