将访问查询转换为 MYSQL

Converting Access Query to MYSQL

潜伏在 Whosebug 上多年,总能找到我的答案),我终于需要 post 我自己的问题了。

我是 MySQL 的新手,一直在使用访问查询设计器来帮助我 learn/convert 我对 SQL 的查询。

在我尝试转换使用另一个查询(子查询)的访问查询之前,它工作正常。

这是已完成的有效 Access 查询:

SELECT all_assm_start_stop.*, employee.first_name
FROM all_assm_start_stop LEFT JOIN employee ON all_assm_start_stop.employee_id = employee.employee_id

all_assm_start_stop 基于此访问查询:

(SELECT assemblies.assemblies_id, assemblies.assembly_name, labor.start_time, labor.stop_time, labor.number_completed, labor.employee_id, assemblies.product_id
FROM labor RIGHT JOIN assemblies ON labor.assemblies_id = assemblies.assemblies_id
WHERE (((assemblies.product_id)=2)))

我今天大部分时间都在研究 MySQL 子查询,但不知道如何转换它。

非常感谢任何帮助!

作为一个不得不这样做太多次的人,这是我找到的最多 direct/literal 的转换方法:

SELECT all_assm_start_stop.*, employee.first_name
FROM ([original query]) AS all_assm_start_stop 
LEFT JOIN employee ON all_assm_start_stop.employee_id = employee.employee_id
;

(请注意,[original_query] 是放置您提供的第二个的位置,为了简洁起见,我以这种方式发布了答案 clarity/generality。)

编辑:如果该查询在许多其他查询中使用,您可能需要考虑将其改为 VIEW

SELECT a.assemblies_id
     , a.assembly_name
     , l.start_time
     , l.stop_time
     , l.number_completed
     , l.employee_id
     , a.product_id
     , e.first_name
  FROM assemblies a
  LEFT
  JOIN labor l
    ON l.assemblies_id = a.assemblies_id
  LEFT 
  JOIN employee e 
    ON e.employee_id = a.employee_id
 WHERE a.product_id = 2