首页 > 解决方案 > 对整个表运行 sql 查询

问题描述

我正在尝试获取员工列表(在 srat 中)以及他们的survey_results(在 sr 中)是否合格。kt 是所有可能活动的列表,有合格或不合格。

SELECT  srat.employee_email,srat.taxyear, sr.item, kt.qualified, kt.unqualified 
FROM survey_results_activities_temp srat, survey_results sr, key_temp kt
WHERE sr.user_email=srat.employee_email AND sr.taxyear=srat.taxyear
AND sr.item_type='AC' AND sr.item=kt.activity

这运行良好,并从 sr 表返回 4 行,并在其上附加了合格或不合格。但我希望它运行在 srat 中的所有employee_email 中。现在它只运行第一个。我究竟做错了什么?顺便说一句,我正在使用 mySQL。

标签: mysqlsql

解决方案


切勿FROM子句中使用逗号。 始终使用正确、明确、标准、可读的JOIN语法。

根据您的描述,您需要LEFT JOIN

SELECT srat.employee_email, srat.taxyear, sr.item, kt.qualified, kt.unqualified 
FROM survey_results_activities_temp srat LEFT JOIN
     survey_results sr
     ON sr.user_email = srat.employee_email AND
        sr.taxyear = srat.taxyear AND
        sr.item_type = 'AC' LEFT JOIN
     key_temp kt
     ON sr.item = kt.activity

推荐阅读