2013-07-06 7 views
0

제품 및 카트 테이블을 결합하여 각 카트의 총 가격을 계산합니다. 파생 된 열의 MySQL Sum()

String sql = "SELECT p.productID, p.productName, p.productPrice, c.quantity, p.productPrice * c.quantity as new_unit_price, SUM(p.productPrice * c.quantity) AS totalPrice" 
       + " FROM sm_product p INNER JOIN sm_cart c " 
       + "ON p.productID = c.productID" 
       + " WHERE c.custName = '" + custName + "'"; 

가 나는 제품 테이블에서 카트 테이블과 제품 가격의 수량을 곱하여 열 이름 new_unit_price을 유도 : 여기 내 SQL 문입니다. 그런 다음 new_unit_price라는 파생 열을 사용하여 장바구니에있는 모든 항목의 가격을 합산하려고합니다. 다음과 같이 데이터베이스의 열에서 데이터를 가져옵니다.

double subItemTotal = rs.getDouble("new_unit_price"); 
double totalPrice = rs.getDouble("totalPrice"); 

내 new_unit_price가 작동합니다. 그러나 불행히도, 내 액수는 효과가 없습니다. 아직 0입니다. 파생 된 열의 값을 어떻게 요약 할 수 있습니까? 미리 감사드립니다.

+0

사용 합() 함수 –

+0

을하지만 아무것도 –

답변

0

SUM() 함수를 사용하려면 명령문 끝에 GROUP BY를 수행해야합니다.

은 전체 카트 총을 얻어야한다 :

String sql = "SELECT c.custname " 
+ ", SUM(p.productPrice * c.quantity) AS totalPrice" 
+ " FROM sm_product p INNER JOIN sm_cart c " 
+ "ON p.productID = c.productID" 
+ " AND c.custName = '" + custName + "'" 
+ " GROUP BY c.custname;" 

또한, 나는에 WHERE를 변경 그래서 그것은 이전의 평가 및 빠른 쿼리를해야한다.

new_unit_price와 장바구니 합계를 같은 쿼리에 넣으려면 해당 테이블을 다시 가져 와서 해당 데이터를 가져와야합니다. 내가 무슨 짓을했는지 그

String sql = "SELECT p.productID, p.productName, p.productPrice, c.quantity " 
+ ", p.productPrice * c.quantity as new_unit_price, total.totalPrice FROM " 
+ "(" 
    + "SELECT c.custname " 
    + ", SUM(p.productPrice * c.quantity) AS totalPrice" 
    + " FROM sm_product p INNER JOIN sm_cart c " 
    + "ON p.productID = c.productID" 
    + " AND c.custName = '" + custName + "'" 
    + " GROUP BY c.custname" 
+ ") AS total " 
+ "INNER JOIN sm_cart c " 
+ "ON total.custname=c.custname " 
+ "INNER JOIN sm_product p " 
+ "ON p.productID = c.productID " 
+0

을 보여줍니다하지만 하위 항목의 총 가격입니다 파생 열을 필요 : 이런 식으로 뭔가 작업을해야합니다. 나는 그것을 제거 할 수 없다. 합계는 합계 또는 파생 열의 하위 합계가 –

+0

인 경우에만 올바르게 이해하면 각 제품의 계산 가격과 장바구니의 총 가격이 모두 한 번에 쿼리되기를 원합니다. 위의 수정 된 답변을 참조하십시오. –

+0

감사합니다. 나는 올바른 가치를 이미 얻었고, 그것이 나의 패스가 잘못되었다는 것을 깨달았습니다. 그리고 그 값은 항상 0.0을 보여줍니다 –