首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

为了 order by 结构子表查询

2012-07-29 
为了 order by 构造子表查询?公司的模拟机教员排班查询, 数据只需要从 SIM_TEACHER 表里面得到, 但是遇到

为了 order by 构造子表查询

?公司的模拟机教员排班查询,

数据只需要从 SIM_TEACHER 表里面得到, 但是遇到了排序问题。

本来只需要根据 Teacher No 排序, 但是后来修改时 ,需要将 Teacher 数据删除,重新写入, 导致了Teacher No 混乱, 这下 ,可不能根据 Teacher No 排序了, 要找到排序字段, 需要关联到 SIM_TRAINING_SIM (SIM_TEACHER_ID), 再由 SIM_TRAINING_SIM 关联到 SIM_SUITE (SUITE_ID)? 如图:

根据 SIM_SUITE 的 SUITE_NO , BATCH_NO 进行排序 。


为了 order by 结构子表查询

如此多重的关联 , 而且, 考虑到将来跨套组的情况, 一个 SIM_TEACHER? 还有可能对应到 多个 SIM_TRAINING_SIM ,这种情况下, 要取对应在 SIM_TRAINING_SIM 表里面的 SUITE_ID 最小值 如何设计 SQL? 呢 ? 

?

搜索到关于 LEFT JOIN 最小值关联的帖子, 设计到了 SQL? :

?

?

    select  t.PILOT_ID as pilotId, p.pilot_name as pilotName, t.TEACHER_LOCK as teacherLock, d.unit_name as TUnitName  from SIM_TEACHER  t inner join   flight.bd_aero_unit d on substr(t.t_unit,1,4)=d.unit_code  left join   flight.pilot_basic_info p on p.basic_info_id = t.PILOT_ID join(select t.batch_no , t.suite_no , m.sim_teacher_id , min(m.suite_id) suite_idfrom sim_suite t join sim_training_sim m on t.suite_id = m.suite_idjoin sim_teacher      u on m.sim_teacher_id = u.sim_teacher_idgroup by t.batch_no , t.suite_no , m.sim_teacher_id) sort onsort.sim_teacher_id = t.sim_teacher_idorder by sort.batch_no, sort.suite_no, t.t_unit
?

?

?

在这里 , 构造了子表? SORT , 并且根据 SUIT_ID? 取得了最小的 。

?

测试结果显示 ,这样的排序完全符合要求 。

?

?

热点排行