MySQL LEFT加入问题 - 我做错了什么?

时间:2012-02-06 15:51:09

标签: mysql left-join

我应该注意id在tdemog_pfp表中并不是唯一的 - 那里有一个自动递增的唯一字段 - 这可能是个问题吗?

好的,我有以下SQL查询:

SELECT id, name, total_staff AS StaffCount, COUNT( q60a ) AS TotalResp, (COUNT( q60a ) / total_staff * 100) AS Perc 
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q60a
GROUP BY name
ORDER BY name

现在,demog表有多行,其中条目可以有q59,q60a,q60b等等,用于colomn qnum

我想恢复结果WHERE qnum = q60a,但是我有一个问题,当我将它添加到上面以进行以下操作时 - 它会返回零结果(空结果集),这是不正确的:< / p>

SELECT id, name, total_staff AS StaffCount, COUNT( q60a ) AS TotalResp, (COUNT( q60a ) / total_staff * 100) AS Perc 
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q60a
    WHERE qnum = q60a
GROUP BY name
ORDER BY name

我哪里错了?

谢谢,

小时。

2 个答案:

答案 0 :(得分:2)

使您的测试成为JOIN条件的一部分,而不是在WHERE子句中进行测试。

SELECT id, name, total_staff AS StaffCount, COUNT( q60a ) AS TotalResp, (COUNT( q60a ) / total_staff * 100) AS Perc 
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q60a
    AND qnum = q60a
GROUP BY name
ORDER BY name

答案 1 :(得分:1)

执行此操作:WHERE qnum = q60a正在将您的查询转换为inner join;因此,在这种情况下没有结果。