有人能找到这个SQL查询的问题吗?
"SELECT SUM(ROUND(IFNULL(mgap_ska_growth,0)))+
SUM(ROUND(IFNULL(mgap_ska_recovery,0))) AS acctotal
FROM mgap_ska
WHERE account_manager_id = '$account_manager_id' AND mgap_status = 1";
问题出在后半部分,因为我可以在WHERE之前删除所有内容并且工作正常。否则我不会得到任何回报。
我已经检查了数据库,并且条件得到了满足,并且我已将变量$ aacount_manager_id替换为实际的帐户管理员ID号,但它仍然无效。
所有字段都根据需要匹配。
你能看到我的大脑屁的位置吗?
答案 0 :(得分:2)
如果无法访问您的数据库,很难确切地说出错误。
您可以按照以下步骤确定问题:
运行不带WHERE子句的查询(您已经完成此操作并找到了一些记录。)
使用以下WHERE子句运行查询:
WHERE account_manager_id =' $ account_manager_id';
如果你找不到任何东西,你就找到了问题所在。如果找到记录,请继续执行步骤3.
使用以下WHERE子句运行查询:
WHERE mgap_status = 1";
如果你没有得到任何回报,你就发现了问题。如果您这样做,则表示您没有任何记录,您指定的mgap_status为1,其中包含" acctotal"。
如果仍然无法确定哪里出错,请运行查询而不进行acctotal计算:
"SELECT *
FROM mgap_ska
WHERE account_manager_id = '$account_manager_id' AND mgap_status = 1";
如果这样可行,则问题在于您的帐户计算(对于您指定的经理和状态)。
如果您的问题是acctotal,请尝试以下方法:
"SELECT SUM(mgap_ska_growth + mgap_ska_recovery) AS acctotal
FROM mgap_ska
WHERE account_manager_id = '$account_manager_id' AND mgap_status = 1";
我确定你知道这一点,但无论如何都值得一提。当您遇到查询或一段代码的问题时,请尽可能地简化它。一旦你完成了简单的工作,就可以解决另一个复杂问题,让它工作,等等,直到你解决了整个问题。
答案 1 :(得分:0)
帐户管理员ID的任何记录是否等于字符串值“$ account_manager_id”?如果不是,如果account_manager_id是一个整数,并且 $ account_manager_id 是一个包含某个整数的变量,那么你需要写:
"SELECT SUM(ROUND(IFNULL(mgap_ska_growth,0)))+
SUM(ROUND(IFNULL(mgap_ska_recovery,0))) AS acctotal
FROM mgap_ska
WHERE account_manager_id = " + $account_manager_id + " AND mgap_status = 1";