SQL查询没有返回足够的记录

时间:2017-07-24 21:40:12

标签: mysql sql performance

我有一个带有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

0 个答案:

没有答案