好的,这是主要的选择查询:
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 个变量。
基本上,主查询返回正在检查的设备列表,对于返回的每一行,嵌套查询运行以查找先前检查的详细信息。它通过选择具有针对 lift_date 的值的最新结果来实现这一点,主查询中的设备 ID 是嵌套查询中用于 WHERE 的变量)
因此,它绝对会浪费页面的加载时间,我应该指出,我在这种状态下继承了这个项目,并试图在不改变数据库结构的情况下使站点上的所有数据库交互合理化。
因此,我将不胜感激有关如何最好地构造语句以在一个表中返回所有必需结果的任何想法,谢谢。