在我的查询中找不到该问题

时间:2014-05-15 21:23:04

标签: mysql sql

有人能找到这个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号,但它仍然无效。

所有字段都根据需要匹配。

你能看到我的大脑屁的位置吗?

2 个答案:

答案 0 :(得分:2)

如果无法访问您的数据库,很难确切地说出错误。

您可以按照以下步骤确定问题:

  1. 运行不带WHERE子句的查询(您已经完成此操作并找到了一些记录。)

  2. 使用以下WHERE子句运行查询:

    WHERE account_manager_id =' $ account_manager_id';

    如果你找不到任何东西,你就找到了问题所在。如果找到记录,请继续执行步骤3.

  3. 使用以下WHERE子句运行查询:

    WHERE mgap_status = 1";

  4. 如果你没有得到任何回报,你就发现了问题。如果您这样做,则表示您没有任何记录,您指定的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";