2009-12-01 84 views
0

我的数据库表中有3列,我需要乘以列itm_count & itm_price并输出给定​​id(itm_id)的总数。当列乘以时SQL不返回值

SELECT sum(itm_price * itm_count) as total FROM ods_temporder WHERE itm_id='11' 

我试图用上面的sql查询来做到这一点,但结果为空。这里似乎是什么问题?

+0

样本数据和预期结果,并给我们真实的样本数据。这总能帮助我们。 – JonH 2009-12-01 20:53:55

+0

@pier - 请更新实际解决方案的内容,并将其作为回答或作为对您问题的编辑发布,以便将来的堆栈溢出运营商可以了解可能发生的情况。现在解决方案被埋在gbn的答案评论中。 – 2009-12-01 21:02:42

+0

或者让gbn的答案接受? – 2009-12-01 21:03:25

回答

5

这会给你什么?

SELECT itm_price, itm_count FROM ods_temporder WHERE itm_id='11' 

是任itm_priceitm_count NULL?你有行itm_id = 11?

+2

@ gbn-I犯了一个愚蠢的错误,没有名为itm_id的列。感谢您指出。当我改变它,SQL查询工作正常。 thnx – pier 2009-12-01 20:56:09

+2

你不应该收到排序的语法错误吗?除非你通过一个没有正确捕捉错误的前端来做这件事。 – 2009-12-01 20:58:43

+0

@Tom H.-是的,我第一次使用phpmyadmin测试它 – pier 2009-12-01 21:12:17

0

itm_price和itm_count在itm_id = 11时包含什么? 这是SQL Server吗?如果是这样你可以使用ISNULL处理是否itm_price或itm_count为null

+0

使用COALESCE()而不是ISNULL()。这是ANSI标准,所以也适用于其他供应商。语法和语义是相同的,所以没有理由继续使用ISNULL()。 – 2009-12-01 22:10:59

4

尝试:

SELECT SUM(COALESCE(itm_price, 0) * COALESCE(itm_count, 0)) as total 
    FROM ods_temporder 
WHERE itm_id='11' 

COALESCE是具有NULL值处理的ANSI标准 - 如果itm_priceitm_count是零,零将被使用这种情况作为价值。否则,要么没有itm_id列的值为11的行,要么在错误的列中查找11值。

+0

@OMG Ponies- :)感谢这个词很有帮助。 – pier 2009-12-01 20:59:55