[英]Debugging MySQL query result. Uses count function, inner join and a sub-query
这是我的查询。 除了COUNT函数返回似乎完全任意的数字(例如7位数字,而我期望3位数字)之外,输出看起来不错。
SELECT tc.tableName, m.fieldName, COUNT(m.fieldName)
FROM apiResult, (
SELECT cc.surveyID, cc.fieldName
FROM apiResult as ar
INNER JOIN columnConversion as cc
ON substring(ar.triggerName,-10)=cc.fieldID
) AS m
INNER JOIN tableConversion as tc
ON m.surveyID=tc.surveyID
GROUP BY tc.tableName, m.fieldName;
我认为,首先, COUNT(m.fieldName)
可能是错误的,因为它与GROUP BY tc.tableName, m.fieldName
不对应。
该查询的作用如下:子查询apiResult中的一个表具有一个名为“ triggerName”的列,其中包含一个我称为“ fieldID”的ID,以及一个名为“ surveyID”的列。 表columnConversion和tableConversion是将ID与人类可读名称匹配的表。 因此,以下查询产生了我想要的计数,但是,我希望将ID替换为人类可读的名称,因此需要上面的查询:
SELECT cc.surveyID, cc.fieldName, COUNT(ar.triggerName)
FROM apiResult as ar
INNER JOIN columnConversion as cc
ON substring(ar.triggerName,-10)=cc.fieldID
GROUP BY (ar.triggerName)
有任何想法我做错了吗?
为什么要混合显式联接和隐式联接? 您似乎错过了第一个表上的join
条件。 好吧,实际上,我认为这不是必需的。 这应该工作:
SELECT tc.tableName, m.fieldName, COUNT(m.fieldName)
FROM (SELECT cc.surveyID, cc.fieldName
FROM apiResult ar INNER JOIN
columnConversion cc
ON substring(ar.triggerName, -10) = cc.fieldID
) m INNER JOIN
tableConversion as tc
ON m.surveyID = tc.surveyID
GROUP BY tc.tableName, m.fieldName;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.