2017-05-16 4 views
0

Wir haben eine SQL-Abfrage, die einen Bericht erzeugt. Wir haben Sucussfully unsere Einstellungen Tabelle beigetreten, um die Integer-Werte mit den richtigen Elementen zu aktualisieren. Wir haben auch eine Union verwendet, um unsere drei Arten von Benutzern anzuzeigen.LINKE VERBINDUNG, INNERER VERBINDUNG UND VERBINDUNGEN, WIE ORDER BY

Wir möchten diese Abfrage nehmen und sie durch das Feld e_job.objId bestellen, aber wir finden es wirklich schwierig mit den multiplen Joins und Vereinigungen.

Wenn jemand helfen könnte, würde es geschätzt werden.

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 

Danke

Antwort

1

Wenn Sie eine ORDER BY Klausel am Ende der Abfrage fügen Sie die gesamte Ergebnismenge gelten sollte. Sie können versuchen, dies hinzuzufügen:

ORDER BY `Job Number` 

Darüber hinaus müssen Sie keine Aliase in Union Abfragen als die erste angeben. Der erste Satz von Aliasen ist was für ein Stick.

+0

Vielen Dank! Wir haben 'statt Backticks' benutzt –

Verwandte Themen