MySQL查询需要返回行,而不是空结果

MySQL查询需要返回行,而不是空结果,mysql,left-join,Mysql,Left Join,好的,由于我的愚蠢,我投票删除了我之前的问题 我有以下代码: SELECT qnum, id, name, total_staff AS StaffCount, COUNT( q61g ) AS TotalResp, (COUNT( q61g ) / total_staff * 100) AS Perc FROM tdemog_pfp LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q61g WHERE qnum = 'q61g'

好的,由于我的愚蠢,我投票删除了我之前的问题

我有以下代码:

SELECT qnum, id, name, total_staff AS StaffCount, COUNT( q61g ) AS TotalResp, 
(COUNT( q61g ) / total_staff * 100) AS Perc 
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q61g
WHERE qnum = 'q61g' AND q60p = '1'
GROUP BY name
ORDER BY name
现在,这个查询的第一部分从
tdemog
表中返回行,例如,它将返回5行数据,每行的id从1到5不等。然后,我需要查询从
tresults
中为第一部分中返回的5行中的每一行返回数据,就像正常的“左连接”

有道理吗


H.

尝试将
WHERE
子句的一部分移动到
JOIN
条件中:

SELECT ...
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q61g AND q60p = '1'
WHERE qnum = 'q61g'
GROUP BY name
ORDER BY name
如果在
WHERE
子句中有第二个表中的字段,它将限制整个记录。。。但是,如果将其放入
JOIN
条件中,即使第二个表中的记录不符合附加条件,也应返回第一个表中的记录


我不确定哪个列属于哪个表。。。但是,将第二个表中的任何列移动到
JOIN
中,尝试将
WHERE
子句的一部分移动到
JOIN
条件中:

SELECT ...
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q61g AND q60p = '1'
WHERE qnum = 'q61g'
GROUP BY name
ORDER BY name
如果在
WHERE
子句中有第二个表中的字段,它将限制整个记录。。。但是,如果将其放入
JOIN
条件中,即使第二个表中的记录不符合附加条件,也应返回第一个表中的记录


我不确定哪个列属于哪个表。。。但是,将第二个表中的任何列移动到您的
JOIN

中,您当前的代码会给您带来什么结果,您希望这些结果有什么不同?@MichaelFredrickson-假设我有两个表,第一个表有5行,我希望查询从第二个表返回所有5行的结果,就像正常的
左连接一样,但我需要在第二个表中的字段具有特定值时运行该查询。目前,上面的查询只会在有数据的情况下返回一行-我需要它返回第一个表中的所有5行-希望这是有意义的?查询中的GROUP BY是否会导致预期结果出现问题?当前代码给出了什么结果,对于这些结果,您希望有什么不同?@MichaelFredrickson-假设我有两个表,第一个表有5行,我希望查询从第二个表返回所有5行的结果,就像正常的
左连接一样,但我需要在第二个表中的字段具有特定值的地方运行。目前,上面的查询只会在有数据的情况下返回一行-我需要它返回第一个表中的所有5行-希望这是有意义的?查询中的GROUP BY是否会导致预期结果出现问题?谢谢!真的,非常感谢。谢谢!真的,非常感谢。