2009-12-01 4 views
0

데이터베이스 테이블에 3 개의 열이 있습니다. 열을 곱하고 it32_count& itm_price를 곱하여 주어진 ID (itm_id)의 합계를 출력해야합니다.SQL- 열을 곱하면 값을 반환하지 않습니다.

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

위의 SQL 쿼리를 사용하여이 작업을 시도했지만 null이 반환되었습니다. 여기에 무슨 문제가있는 것 같습니까?

+0

샘플 데이터와 예상 결과가 나와 실제 샘플 데이터를 제공합니다. 그것은 항상 우리를 돕습니다. – JonH

+0

@pier - 실제 솔루션이 무엇인지 업데이트하고 질문에 대한 답변이나 수정 사항으로 게시하여 향후 스택 오버플로를하는 사람이 무슨 일이 일어날 지 알 수 있도록하십시오. 현재이 솔루션은 gbn의 답변에 담겨 있습니다. –

+0

또는 gbn의 답변을 수락 하시겠습니까? –

답변

5

무엇이 당신에게 뭘 제공합니까?

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

itm_price 또는 itm_count NULL 중 하나인가? itm_id = 11 행이 있습니까?

+2

@ gbn- 나는 어리석은 실수를 저질렀다. itm_id 란 이름의 칼럼이 없다. 그것을 지적 주셔서 감사합니다. 내가 그것을 바꿨을 때, SQL 쿼리는 잘 동작했다. thnx – pier

+2

그런 다음 정렬 오류가 발생하지 않아야합니까? 오류를 제대로 잡지 않는 프론트 엔드를 통해이 작업을 수행하지 않는 한. –

+0

@Tom H.- 예, 먼저 phpmyadmin을 사용하여 테스트했습니다 – pier

0

itm_id = 11 일 때 itm_price 및 itm_count에 포함되는 것은 무엇입니까? 이 SQL Server입니까? 그래서 당신은 itm_price 여부를 처리 할 ISNULL를 사용하거나 itm_count가 null의 경우

+0

ISNULL() 대신 COALESCE()를 사용하십시오. ANSI 표준이므로 다른 공급 업체와도 협력합니다. 구문과 의미는 동일하므로 ISNULL()을 계속 사용할 이유가 없습니다. –

4

시도 :

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

COALESCE는 NULL 값을 처리하는 ANSI 표준입니다 - itm_price 또는 itm_count가 null의 경우, 제로가 사용됩니다 이 경우 값으로. 그렇지 않으면 itm_id 열의 값이 11 인 행이 없거나 잘못된 열의 11 값을 찾고 있습니다.

+0

@OMG 포니 - :) 감사합니다 그 용어는 도움이되었다. – pier