好吧,由于我的愚蠢,我投票决定删除我之前的问题......
我有以下代码:
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
表 WHERE q60p = 1
中为第一部分中带回的 5 行中的每一行带回数据 -就像一个普通的“LEFT JOIN”。
有道理吗?
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
中。
关于MySQL Query 需要带回行,而不是空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9196671/