在重复区域中嵌套查询,需要更好的方法来执行此操作

时间:2013-03-04 16:51:53

标签: sql sql-server

好的,这是主要的选择查询:

    SELECT 
        tbl_equip_swl_unit.unit_name, 
        tbl_equipment.equipment_id, 
        tbl_equipment.e_serial, 
        tbl_equipment.e_description, 
        tbl_equipment.e_swl,  
        tbl_equipment.e_swl_unit_id, 
        tbl_Lifting_Gear.lifting_through, 
        tbl_Lifting_Gear.liftingNDT,
        tbl_Lifting_Gear.lifting_ref_no, 
        tbl_Lifting_Gear.liftingTest,
        tbl_Lifting_Gear.inspected 
 FROM tbl_equipment 
INNER JOIN tbl_equip_swl_unit ON tbl_equipment.e_swl_unit_id = tbl_equip_swl_unit.unit_id 
INNER JOIN tbl_Lifting_Gear ON tbl_equipment.equipment_id = tbl_Lifting_Gear.e_id
WHERE   lifting_loc = @loc AND tbl_Lifting_Gear.con_id = @con AND tbl_equipment.e_deleted = 'N' ORDER BY lifting_ref_no, e_swl, e_serial

下面的查询当前嵌套在网页的重复区域内,该网页会一直运行,直到返回主查询中的所有结果。

SELECT TOP 1
        e_defects,
        con_id,
        lifting_loc,
        lifting_date,
        e_add_type

FROM dbo.tbl_Lifting_Gear 
WHERE e_id = @id ORDER BY lifting_date DESC

@id的值为tbl_Lifting_Gear.equipment_id(来自父查询)

@con& @loc是从浏览器传递的2个变量。

基本上,主查询返回正在检查的设备列表,对于返回的每一行,嵌套查询运行以查找上一次检查的详细信息。它通过选择具有针对lifting_date的值的最新结果来实现此目的,其中来自主查询的equipment_id是嵌套查询中用于WHERE的变量)

因此它绝对会破坏页面的加载时间,我应该指出我已经在这种状态下继承了这个项目,并且我试图在不改变数据库结构的情况下合理化站点上的所有数据库交互。

所以我很感激如何最好地构建一个语句以便在一个表中返回所有必需的结果,谢谢。

0 个答案:

没有答案