2014-04-03 5 views
1

날짜 범위에서 생성 된 사용자와 관련된 고객 수를 반환하는 MySQL 쿼리를 만들려고합니다. 나는 다음과 같은 쿼리가 :MySQL 그룹이 null 값으로 조인합니다.

SELECT COUNT(`customer`.`user_id`) as `count`, `user`.`first_name`, `user`.`last_name` 
FROM (`user`) 
LEFT JOIN `customer` ON `user`.`id` = `customer`.`user_id` 
WHERE `customer`.`date_created` >= '2014-03-27 23:41:28' AND `customer`.`date_created` <= '2014-04-04 00:41:28' 
GROUP BY `customer`.`user_id` 
ORDER BY `count` 
LIMIT 5 

것은 내가 제거하면이 절은 다음 내가 널 값을 포함하여 기대하는 결과를 얻을 곳 :

count first_name last_name 
0  Name   Name 
1  Name   Name 
3  Name   Name 
10  Name   Name 

문제는 그 나는 where 절 I 돈을 소개 할 때 count에 값이없는 행이 반환됩니다. 누구든지 도와 줄 수 있습니까?

+0

사용자 1 <--> N 고객에서 타의 추종을 불허하는 결과 0 수를 생산한다? – Leo

답변

2
는 바로 테이블 모든 결과 세트에서 결과를 필터링 할 수 있도록 ON() 절에 WHERE 조건을 이동

, 왼쪽 테이블

SELECT COUNT(`customer`.`user_id`) as `count`, 
`user`.`first_name`, 
`user`.`last_name` 
FROM `user` 
LEFT JOIN `customer` ON (
`user`.`id` = `customer`.`user_id` 
AND `customer`.`date_created` >= '2014-03-27 23:41:28' 
AND `customer`.`date_created` <= '2014-04-04 00:41:28') 
GROUP BY `user`.`id` 
ORDER BY `count` 
LIMIT 5 
+0

감사! 그것은 이제 더 가까워 보인다. 비록 한계를 벗어날 때 나는 이상한 결과를 얻고있다. 모든 사용자를 반환하지는 않습니다. 왜 데이터를 가지고 어떤 이유인지 알 수 없습니다. – Adam

+0

나는 이것을 11 명의 사용자와 함께 테스트했으며, 오직 하나의 사용자 만이 0의 데이터를 반환합니다. 사용자 중 한 명에게 고객에게 게재를 시작하면 고객 수가 0 인 사용자가 두 명 이상인 것처럼 보이지는 않습니다. – Adam

+0

@ user2486399 문제를 쉽게 식별 할 수 있도록 예제 데이터 세트로 [sql fiddle] (http://sqlfiddle.com/) 예제를 제공 할 수 있습니까? –

관련 문제