2014-01-26 2 views
0

나는 SQL을 배우고 있으며 일부 구문에 어려움을 겪고 있습니다. 따라서 다음 SQL 코드는 공급 업체 목록과 모든 제품의 총 가격을 표시합니다. 나는 단지 총 합이 100 이하(SQL) 합계를 사용하여 고생

SELECT Suppliers.SupplierName, SUM(Products.Price) 
FROM Suppliers, Products 
WHERE Suppliers.SupplierID = Products.SupplierID 
AND Products.Price < 100 
GROUP BY Suppliers.SupplierName; 

입니다 코드는 순간이기 때문에이 행을 표시 할 추가 조건을 포함하려고 할 때까지 잘 작동, 단순히 개별 값보다 큰 생략 최종 합계에서 100보다. 코드를

AND SUM(Products.Price) < 100 

으로 변경했습니다. 그리고 나는 그것이 내가 원하는 방식으로 작동하게 만드는 방법에 대해 확신하지 못한다.

또한 Oracle을 사용하십시오.

답변

0

이 시도 :

SELECT Suppliers.SupplierName, SUM(Products.Price) totalPrice 
FROM Suppliers, Products 
WHERE Suppliers.SupplierID = Products.SupplierID 
GROUP BY Suppliers.SupplierName 
HAVING totalPrice < 100; 
+0

'having' 절에서 열 별칭을 사용할 수 없습니다. 하위 쿼리를 사용하지 않는 한'order by'에서만 사용할 수 있습니다. –

0

사용

WHERE Suppliers.SupplierID = Products.SupplierID 
GROUP BY Suppliers.SupplierName 
HAVING SUM(Products.Price) < 100; 
4

당신은 SQL을 학습하는 경우, 당신은 명시 적 join 구문을 사용하는 법을 배워야한다. 당신이 having 절을 찾고 있다고 생각합니다;

SELECT s.SupplierName, SUM(p.Price) 
FROM Suppliers s join 
    Products p 
    on s.SupplierID = p.SupplierID 
GROUP BY s.SupplierName 
HAVING SUM(p.Price) < 100; 

또한 쿼리 (sp)에 테이블 별칭을 추가 : 집계 된 금액에 조건이가는 곳이다. 이것들은 일반적으로 쿼리를 읽기 쉽게 만들어 주며, 자체 조인에 필요합니다.