내 데이터베이스에서 다음과 같은 테이블이 있습니다은 가입
USERS
+-------+-------------------------------------+
| id | name |
+-------+-------------------------------------+
| 1 | Johnny Appleseed |
| 2 | Pete Jones |
| 3 | John Doe |
| 4 | Jane Plick |
+-------+-------------------------------------+
보고서를 내가해야 할 일은
+-------+-------+-----------------------------+
| id | owner | title |
+-------+-------+-----------------------------+
| 1 | 1 | Weekly report #86 |
| 2 | 1 | Weekly report #87 |
| 3 | 1 | Weekly report #88 |
| 4 | 2 | Weekly report #1 |
| 5 | 3 | Weekly report #33 |
| 6 | 3 | Weekly report #34 |
+-------+-------------------------------------+
GROUP은 결과를 이름으로 처리하므로 목록 자체는 사전 순이지만 마지막 발생이 필요합니다. 사용자의 ID와 일치하는 행의
REPORTS 테이블의 "owner"열은 USERS 테이블의 "id"열과 일치합니다.
이Jane Plick |
John Doe | Weekly Report #34
Johnny Appleseed | Weekly Report #88
Pete Jones | Weekly Report #1
나의 현재 쿼리 거의 작동 그러나 그것은 마지막 해당 사용자에 대한 FIRST 주간 보고서,하지를 보여줍니다
내 원하는 결과는 다음과 같다.
SELECT * FROM users AS a LEFT JOIN ppp_reports AS b ON a.id=b.owner WHERE a.active=1 GROUP BY a.id ORDER BY a.firstname ASC
다양한 변형을 시도했지만 항상 REPORTS 테이블의 첫 번째 행이 남아 있습니다.
도움을 주시면 대단히 감사하겠습니다. 모든 보고서는 "주간 보고서 #X"의 이름을 지정하는 특정 경우
이는 '그룹 기준'을 수행 할 때 표준적인 동작입니다. 그룹에서 요청 된 모든 필드를 채우기 위해 일치하는 레코드에서 첫 번째/가장 이른 값을 선택합니다. 이것은 기본적으로 "그룹당 최상위 n"이며, 여기서 맨은 "최근"이고 n은 1입니다. –
'reports' 테이블의'id'에 대한 가장 높은 숫자 값이 가장 최근 값이라고 가정합니까, 아니면 보고서의 유효 기간을 결정하는 추가 필드 (타임 스탬프와 같은)가 있습니까? –