业务,有一个字表,还有n个子表,然后首先按照主表的修改时间排序,
在按照因为好多业务表都是JOIN方式关联的也就是说 Join之后就没有主子表这一说了,但是呢它还想要如下这种展示的方式
也就是说先按照部门来进行分组,然后在按照项目的修改时间来进行排序 那假设这个部门有01,02,03三个项目
如果某个部门的01项目更改了,那之后的02,03也要跟着排在01后面,也就是最后修改的,要放在前面排序,但是同时用户也能在页面按照项目编号之类的进行排序
而如果03项目修改了,就要结果是03, 01, 02这样的结果
那首先它就不能单独的按照修改时间排了. 也就是说只能先对,部门,还有项目信息进行分组查询,
也就先写了个视图
SELECT
max( `a`.`update_date` ) AS `MAX_DATE`,
`pro`.`id` AS `id`,
`bduse`.`user_id` AS `user_id`,
`pro`.`project_num` AS `project_num`,
`pro`.`project_name` AS `project_name`,
`pro`.`shoud_deposit_type` AS `shoud_deposit_type`,
`pro`.`project_leader_uid` AS `project_leader_uid`,
`pro`.`pro_deposit_status` AS `pro_deposit_status`,
`empee`.`office_name` AS `office_name`
FROM
(((
`bd_deposit_info` `a`
JOIN `bd_project` `pro` ON ((
`a`.`project_id` = `pro`.`id`
)))
JOIN `js_sys_office` `empee` ON ((
`pro`.`dept_id` = `empee`.`office_code`
)))
JOIN `bd_project_user` `bduse` ON ((
`a`.`project_id` = `bduse`.`project_id`
)))
WHERE
((
`a`.`status` = '0'
)
AND ( `pro`.`status` = '0' ))
GROUP BY
`pro`.`id`,
`pro`.`project_num`,
`pro`.`project_name`,
`pro`.`shoud_deposit_type`,
`pro`.`project_leader_uid`,
`bduse`.`user_id`,
`empee`.`office_name`
先把要的信息,进行分组,然后在进行查询的时候join这张表就做出了效果
SELECT
*
FROM
bd_deposit_info a
JOIN bd_thebidder thebidder ON a.bidder_id = thebidder.id
#这里直接JOIN了视图
JOIN bd_project_depositshow_v pro ON a.project_id = pro.id
WHERE
a.deposit_state = '2'
AND a.STATUS = '0'
AND pro.user_id = 'system'
AND thebidder.STATUS = '0'
AND pro.pro_deposit_status = '0'
ORDER BY
#这里先对视图里面分完组的结果进行排序
pro.MAX_DATE DESC,
#在根据要查询的内容进行排序(是从前台传过来的条件)
a.update_date DESC
LIMIT 20;
目前只能想到这样解决了,先记着,日后成为大神了,看看能不能在优化一下哈哈