Tôi có một bảng mà tôi muốn nhận mục mới nhất cho mỗi nhóm. Đây là bảng:
DocumentStatusLogs Bàn
|ID| DocumentID | Status | DateCreated |
| 2| 1 | S1 | 7/29/2011 |
| 3| 1 | S2 | 7/30/2011 |
| 6| 1 | S1 | 8/02/2011 |
| 1| 2 | S1 | 7/28/2011 |
| 4| 2 | S2 | 7/30/2011 |
| 5| 2 | S3 | 8/01/2011 |
| 6| 3 | S1 | 8/02/2011 |
Bảng sẽ được nhóm theo DocumentIDvà sắp xếp theo DateCreatedthứ tự giảm dần. Đối với mỗi DocumentID, tôi muốn có được trạng thái mới nhất.
Đầu ra ưa thích của tôi:
| DocumentID | Status | DateCreated |
| 1 | S1 | 8/02/2011 |
| 2 | S3 | 8/01/2011 |
| 3 | S1 | 8/02/2011 |
Có bất kỳ chức năng tổng hợp để chỉ nhận đầu từ mỗi nhóm? Xem mã giả
GetOnlyTheTopdưới đây:SELECT DocumentID, GetOnlyTheTop(Status), GetOnlyTheTop(DateCreated) FROM DocumentStatusLogs GROUP BY DocumentID ORDER BY DateCreated DESCNếu chức năng đó không tồn tại, có cách nào tôi có thể đạt được đầu ra tôi muốn không?
- Hoặc tại nơi đầu tiên, điều này có thể được gây ra bởi cơ sở dữ liệu không chuẩn hóa? Tôi đang nghĩ, vì những gì tôi đang tìm kiếm chỉ là một hàng, nên nó
statuscũng được đặt trong bảng cha mẹ?
Vui lòng xem bảng cha để biết thêm thông tin:
DocumentsBảng hiện tại
| DocumentID | Title | Content | DateCreated |
| 1 | TitleA | ... | ... |
| 2 | TitleB | ... | ... |
| 3 | TitleC | ... | ... |
Bảng cha có nên như thế này để tôi có thể dễ dàng truy cập trạng thái của nó không?
| DocumentID | Title | Content | DateCreated | CurrentStatus |
| 1 | TitleA | ... | ... | s1 |
| 2 | TitleB | ... | ... | s3 |
| 3 | TitleC | ... | ... | s1 |
CẬP NHẬT Tôi mới học cách sử dụng "ứng dụng" giúp giải quyết các vấn đề như vậy dễ dàng hơn.