我有一个带有MySQL数据库后端的PHP应用程序。我正在尝试优化查询。我的数据库中有一个包含2780条记录的表。我需要创建一个检索所有这些记录的查询,并且还显示人类可读的信息而不是ID号。我试图使用JOIN语句来做到这一点。这是我的疑问:
SELECT lde.gsfclde.id, lde.gsfclde.device_number,
lde.gsfcclassification.value as "classification",
lde.gsfccategory.value as "category",
lde.gsfcldetypes.value as "type", lde.gsfclde.size,
lde.gsfclde.size_unit, lde.gsfcpower.value as "power",
lde.gsfcmanufacturer.value as "manufacturer", lde.gsfclde.capacity,
lde.gsfclde.serial_number, lde.gsfclde.model_number, lde.gsfclde.ecn,
lde.gsfclde.center, lde.gsfccode.value as "code",
lde.gsfcgprstatus.value as "gpr_status",
lqms.labs_lab.lab_name as "lab",
lqms.labs_lab.building as "building",
lqms.labs_lab.room as "room",
lqms.labs_person.first_name as "owner_first_name",
lqms.labs_person.last_name as "owner_last_name",
lde.gsfclde.criticality, lde.gsfclde.last_frequent,
lde.gsfclde.last_periodic, lde.gsfclde.last_load_test,
lde.gsfclde.next_frequent, lde.gsfclde.next_periodic,
lde.gsfclde.next_load_test from lde.gsfclde
join lde.gsfcclassification on
lde.gsfclde.classification_id = lde.gsfcclassification.id
join lde.gsfccategory on
lde.gsfclde.category_id = lde.gsfccategory.id
join lde.gsfcldetypes on
lde.gsfclde.type_id = lde.gsfcldetypes.id
join lde.gsfcpower on
lde.gsfclde.power_id = lde.gsfcpower.id
join lde.gsfcmanufacturer on
lde.gsfclde.manufacturer_id = lde.gsfcmanufacturer.id
join lde.gsfccode on
lde.gsfclde.code_id = lde.gsfccode.id
join lde.gsfcgprstatus on
lde.gsfclde.gpr_status_id = lde.gsfcgprstatus.id
join lqms.labs_lab on lde.gsfclde.lab_id = lqms.labs_lab.id
join lqms.labs_person on lde.gsfclde.owner = lqms.labs_person.id
order by lde.gsfclde.device_number
我遇到的问题是上面的查询只返回2226条记录。我假设这是因为LDE表中的某些记录具有NULL值。我试图在每个JOIN片段中添加OR语句。例如:
join lde.gsfccode on (lde.gsfclde.code_id = lde.gsfccode.id or
lde.gsfclde.code_id = NULL)
但是,该查询只是旋转和旋转,永远不会返回结果。那么,如何修改我的查询以包含LDE表中可能具有NULL值的记录?
非常感谢任何帮助。谢谢!
Chris Martino