2017-05-16 68 views
0

我们有一个产生报告的SQL查询。我们合理地加入了我们的设置表来更新正确的项目的整数值,我们还使用联合来显示我们的三种类型的用户。LEFT JOIN,INNER JOIN和工会,如何ORDER BY

我们希望通过e_job.objId场借此查询和订购它,但是我们发现与多个连接与联合它真的很难。

如果有人可以帮助我们将不胜感激。

SELECT e_job.objId AS 'Job Number', e_student.Lastname AS 'Last Name', e_student.Name AS 'First Name', e_asset.objId AS 'Asset Number', e_asset.aSerialNumber AS 'Serial Number', si.sLabel AS 'Issue', srt.sLabel AS 'Repair Type', ss.sLabel As 'Status', e_job.note 'Description',FROM_UNIXTIME(e_job.jCreatedAt,'%d/%m/%y') AS 'Date Created' 
       FROM e_job 
       INNER JOIN e_student ON e_job.jName = e_student.username 
       INNER JOIN e_asset ON e_job.jAsset = e_asset.aId 
       LEFT JOIN e_settings si ON si.sKey = 'job_issue' AND si.sValue = e_job.jIssue 
       LEFT JOIN e_settings srt ON srt.sKey = 'job_rep_type' AND srt.sValue = e_job.jRepairType 
       LEFT JOIN e_settings ss ON ss.sKey = 'job_status' AND ss.sValue = e_job.jStatus 
       WHERE jStatus = 1 && jRepairType = 2 
       UNION 
       SELECT e_job.objId AS 'Job Number', e_teachers.Lastname AS 'Last Name', e_teachers.Name AS 'First Name', e_asset.objId AS 'Asset Number', e_asset.aSerialNumber AS 'Serial Number', si.sLabel AS 'Issue', srt.sLabel AS 'Repair Type', ss.sLabel As 'Status', e_job.note 'Description',FROM_UNIXTIME(e_job.jCreatedAt,'%d/%m/%y') AS 'Date Created' 
       FROM e_job 
       INNER JOIN e_teachers ON e_job.jName = e_teachers.username 
       INNER JOIN e_asset ON e_job.jAsset = e_asset.aId 
       LEFT JOIN e_settings si ON si.sKey = 'job_issue' AND si.sValue = e_job.jIssue 
       LEFT JOIN e_settings srt ON srt.sKey = 'job_rep_type' AND srt.sValue = e_job.jRepairType 
       LEFT JOIN e_settings ss ON ss.sKey = 'job_status' AND ss.sValue = e_job.jStatus 
       WHERE jStatus = 1 && jRepairType = 2 
       UNION 
       SELECT e_job.objId AS 'Job Number', e_supportStaff.Lastname AS 'Last Name', e_supportStaff.Name AS 'First Name', e_asset.objId AS 'Asset Number', e_asset.aSerialNumber AS 'Serial Number', si.sLabel AS 'Issue', srt.sLabel AS 'Repair Type', ss.sLabel As 'Status', e_job.note 'Description',FROM_UNIXTIME(e_job.jCreatedAt,'%d/%m/%y') AS 'Date Created' 
       FROM e_job 
       INNER JOIN e_supportStaff ON e_job.jName = e_supportStaff.username 
       INNER JOIN e_asset ON e_job.jAsset = e_asset.aId 
       LEFT JOIN e_settings si ON si.sKey = 'job_issue' AND si.sValue = e_job.jIssue 
       LEFT JOIN e_settings srt ON srt.sKey = 'job_rep_type' AND srt.sValue = e_job.jRepairType 
       LEFT JOIN e_settings ss ON ss.sKey = 'job_status' AND ss.sValue = e_job.jStatus 
       WHERE jStatus = 1 && jRepairType = 2 

谢谢

回答

1

如果添加ORDER BY子句应该适用于整个查询结果集的结尾。您可以尝试添加此:

ORDER BY `Job Number` 

而且,你不需要在比第一个其他联合查询指定别名。第一组别名是什么棒。

+0

谢谢!我们使用'而不是反引号' –