2014-04-19 2 views
0

내가 가지고있는이 두 테이블을 포함한다 :MySQL의 그룹에 의해 널 (null)

Table members 
| id | name | 
---------------- 
| 01 | John | 
| 02 | Michael | 
| 03 | Richard | 

Table payments 
| id | eur | name | date  | 
------------------------------------- 
| 238 | 9.95 | John | 1323377751 | 
| 233 | 9.95 | Michael | 1397864609 | 
| 220 | 9.95 | Michael | 1397852739 | 
| 215 | 9.95 | John | 1397852719 | 
| 2 | 9.95 | Richard | 1323377751 | // This payment was made more than 24h ago 

벨로

내 쿼리입니다 :

select id, m.name, sum(eur) as total 
from mambers as m 
left join payments as p 
on m.name = p.name 
where p.date >= unix_timestamp(current_timestamp - interval 24 hour) 
group by m.name 

및 반환은 다음과 같습니다

| John | 19.90 | 
| Michael | 19.90 | 
,451,515,

하지만 나는 또한이 같은 지난 24 없음 지불과 구성원을 포함 할 필요가 : 조회를하는 동안

| John | 19.90 | 
| Michael | 19.90 | 
| Richard | 00.00 | 

답변

1

두 오류가 발생했습니다.

  1. 테이블 이름 mambers가 존재하지 않습니다.

  2. 모호한 열 이름 id.

대신을 시도해보십시오

select m.id, m.name, IFNULL(sum(eur),'00.00') as total 
from members as m 
left join payments as p 
on m.name = p.name and p.date >= unix_timestamp(current_timestamp - interval 24 hour) 
group by m.name 

결과 :

ID NAME  TOTAL 
1 John  10 
2 Michael 20 
3 Richard 00.00 

SQL Fiddle 결과를 참조하십시오.

+0

작동하지 않는 것 같습니다. 동일한 결과를 반환합니다. – VDonchev

+0

@ V.Donchev : 내 대답을 수정했습니다. 이제 그 일. 샘플 결과를 바이올린으로 확인할 수 있습니다. –

+0

예 - 감사합니다! – VDonchev