这是我的查询。输出看起来很好,除了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与人类可读名称匹配的表。因此,follow查询会生成我想要的计数,但是,我希望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)
任何想法我做错了什么?
答案 0 :(得分:1)
为什么要混合使用显式和隐式连接?您似乎在第一个表上错过了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;