Bladeren bron

id查询实验室信息sql优化

hanzhiwei 2 jaren geleden
bovenliggende
commit
ccb51a2673

+ 17 - 5
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectMapper.xml

@@ -1274,15 +1274,27 @@
             lscf.id level,
             lscf.classified_name levelName,
             (SELECT sd.dept_name FROM sys_dept sd WHERE ls.dept_id = sd.dept_id) collegeName,
-            (select f.name from lab_build_floor f where f.id = ls.build_id) buildName,
-            (SELECT f.name FROM lab_build_floor f WHERE f.id = ls.floor_id) floorName,
+            (select f.name from lab_build_floor f where f.id = bfl.build_id) buildName,
+            (SELECT f.name FROM lab_build_floor f WHERE f.id = bfl.floor_id) floorName,
             ls.admin_id adminId,
 			(SELECT su.phonenumber FROM sys_user su WHERE ls.admin_id = su.user_id) adminPhone,
             ls.safe_user_id safeUserId,
-			(SELECT GROUP_CONCAT(su.phonenumber) FROM sys_user su WHERE FIND_IN_SET( su.user_id,ls.safe_user_id))  safeUserPhone
+            (SELECT GROUP_CONCAT(ur.phonenumber)
+                FROM sys_user ur
+                WHERE ur.`user_id`
+                IN (
+                SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(ls.safe_user_id, ',', b.help_topic_id + 1), ',',
+                -1) result
+                FROM mysql.help_topic b
+                WHERE b.help_topic_id <
+                (LENGTH(ls.safe_user_id) - LENGTH(REPLACE(ls.safe_user_id, ',', '')) + 1)
+                )
+            ) safeUserPhone
         FROM
-        `lab_subject` ls LEFT JOIN lab_safe_classtype lsct ON ls.type_id = lsct.id
-				LEFT JOIN lab_safe_classified lscf ON ls.level = lscf.id
+        `lab_subject` ls
+        left join lab_build_floor_layout bfl on ls.`id` = bfl.`sub_id`
+        LEFT JOIN lab_safe_classtype lsct ON ls.type_id = lsct.id
+        LEFT JOIN lab_safe_classified lscf ON ls.level = lscf.id
         <where>
             <if test="subIds != null and subIds.length != 0">
                 <foreach collection="subIds" item="id" open=" and ls.id in(" separator="," close=")">