2013-08-12 2 views
1

그래서 내가 가게를 운영한다고 가정 해 보겠습니다. 이 가게에는 6 명의 직원이 있습니다. 이 직원들은 모든 판매를 MySQL 데이터베이스에보고합니다. 직원이 판매를하지 않으면 그 주에 해당 시스템에 항목이 없습니다. 유료 일 주위오고, 나는 매출액 기준 모두를 지불하는 방법을 많이 파악해야합니다관련 데이터가없는 열에 모든 값 표시

Select Staff, count(Item_Sold) from Inventory where Sale_Date between '2013-05-02%' and '2013-05-08%' group by Staff; 

나는 대부분의 출력을 얻을 것이다 :

Staff  Items_Sold 
Aaron  6 
Bob   2 
Jeff  4 
Karen  13 

을 지금은 해고 적이없는 가정 할 수 있습니다 누구든지, 그리고 직원은 항상 동일하게 유지됩니다. 또한 그들이 과거에 판매를했다고 말합니다. 주간지의 모든 직원을 판매 여부에 관계없이보고 싶습니다. '날짜'상관 관계를 제거하지 않고 어떻게 내 쿼리에 맞 춥니 까? I.E.

Staff  Items_Sold 
Aaron  6 
Bob   2 
Geraldo  0 
Jeff  4 
Karen  13 
Mary  0 

답변

1

left join을 사용할 수 있습니다. 좋은 설명이 있습니다 : http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php

기본적으로 왼쪽 결합은 날씨에 관계없이 첫 번째 테이블의 모든 결과를 반환하거나 두 번째 테이블에 관련 데이터가없는 것입니다. 당신이 (당신이해야한다) 직원의 별도의 테이블이있는 경우

+0

을이 문제와 함께, 모든 관련 정보가 동일한 테이블에 위치해 있습니다. 같은 테이블을 두 번 불러 주실 수 있습니까? – Smiff

0

, 당신이 LEFT JOIN으로이 작업을 수행 할 수 있습니다

SELECT Staff.Name, count(Item_Sold) 
FROM Staff 
LEFT JOIN Inventory ON Staff.Name = Inventory.Staff 
WHERE Sale_Date BETWEEN '2013-05-02%' AND '2013-05-08%' 
GROUP BY Staff.Name