Search code examples
mysqlsqldatabasecrystal-reports

Converting SQL query to MySql query


I've got this query that I'm trying to convert myself word for word:

SELECT "Job_Operation"."Work_Center",
       "Job_Operation"."Job_Operation",
       "Job_Operation_Time"."Work_Date",
       "Job_Operation"."Est_Total_Hrs"."Job_Operation_Time"."Act_Run_Hrs",
       "Job_Operation_Time"."Act_Setup_Hrs",
       "Job",
       "Job"."Description",
       "Job_Operation_Time"."Overtime_Hrs"."Job_Operation_Time"."Act_Setup_Hrs",
       "Job"."Job",
       "Job"."Description",
       "Job_Operation_Time"."Labor_Burden",
       "Job_Operation"."Est_Setup_Labor",
       "Job_Operation"."Est_Run_Labor",
       "Job_Operation"."Est_Labor_Burden"."Job_Operation"."Operation_Service"
FROM {oj("Job" "Job"
  LEFT OUTER JOIN "Job_Operation" "Job_Operation"
    ON "Job"."Job"="Job_Operation"."Job")
  LEFT OUT JOIN "Job_Operation_Time" "Job_Operation_Time"
    ON "Job_Operation"."Job_Operation"."Job_Operation"="Job_Operation_Time"."Job_Operation"}

And this is what I came up with for MySql:

SELECT Job_Operation.Work_Center,
       Job_Operation.Job_Operation,
       Job_Operation_Time.Work_Date,
       Job_Operation.Est_Total_Hrs.Job_Operation_Time.Act_Run_Hrs,
       Job_Operation_Time.Act_Setup_Hrs,
       Job,
       Job.Description,
       Job_Operation_Time.Overtime_Hrs.Job_Operation_Time.Act_Setup_Hrs,
       Job.Job,
       Job.Description,
       Job_Operation_Time.Labor_Burden,
       Job_Operation.Est_Setup_Labor,
       Job_Operation.Est_Run_Labor,
       Job_Operation.Est_Labor_Burden.Job_Operation.Operation_Service
FROM LEFT JOIN (Job LEFT JOIN Job_Operation ON Job.Job=Job_Operation.Job)
     LEFT JOIN Job_Operation_Time Job_Operation_Time
       ON Job_Operation.Job_Operation.Job_Operation=Job_Operation_Time.Job_Operation

But its clearly not working. Where am I going wrong? Is there an easy tool out there to help with this kind of thing? Upon further investigation I realized that this is a CRYSTAL REPORT QUERY as its not working on my SQL server either.


Solution

  • Taking a stab here:

    SELECT "Job_Operation"."Work_Center"
        ,"Job_Operation"."Job_Operation"
        ,"Job_Operation_Time"."Work_Date"
        ,"Job_Operation"."Est_Total_Hrs"
        ,"Job_Operation_Time"."Act_Run_Hrs"
        ,"Job_Operation_Time"."Act_Setup_Hrs"
        ,"Job"."Description"
        ,"Job_Operation_Time"."Overtime_Hrs"
        ,"Job_Operation_Time"."Act_Setup_Hrs"
        ,"Job"."Job"
        ,"Job_Operation_Time"."Labor_Burden"
        ,"Job_Operation"."Est_Setup_Labor"
        ,"Job_Operation"."Est_Run_Labor"
        ,"Job_Operation"."Est_Labor_Burden"
        ,"Job_Operation"."Operation_Service"
    FROM "Job" AS "Job"
    LEFT OUTER JOIN "Job_Operation" AS "Job_Operation" ON "Job"."Job" = "Job_Operation"."Job"
    LEFT OUTER JOIN "Job_Operation_Time" AS "Job_Operation_Time" ON "Job_Operation"."Job_Operation" = "Job_Operation_Time"."Job_Operation"
    

    I eliminated the awkward "somewhere this is proprietary" syntax, fixed a couple of periods that should have been commas, changed OUT to OUTER, and provided AS statements for table aliasing. This should be ANSI-compliant now, hopefully this helps.

    EDIT

    Updated my answer to escape all reserved words by encasing things in quotation marks. Also eliminated the double-selection of Job.Description.