2

我有两个不同的表,我的第一个表包含授予其他请求的权限。它具有以下列:

授权表

| authorization_date | role_id | request_id |
|--------------------|---------|------------|
| 2011-08-02         |    1    | 168        |
| 2011-08-10         |    2    | 168        |
| 2011-08-20         |    6    | 168        |
| 2011-08-03         |    2    | 169        |
| 2011-08-24         |    6    | 169        |
| 2011-08-05         |    3    | 170        |
| 2011-08-09         |    5    | 170        |

如您所见,不同的人有不同的角色,也可以授予一定级别的授权。角色越高,处理的请求就越高。现在,我想做的是显示与 role_id 关联的描述(在另一个表中)并且仅显示最后一次授权。因为我有它的日期,所以我已经知道哪一个是最新的。但是我不知道如何执行此操作,因为我尝试通过获取日期的最大值来对查询进行分组,当我将它链接到仅包含 role_id 描述的第二个表时,我得到重复,我只是可以'想不出办法做到这一点,我对查询有点陌生,因为我一直在自己学习,所以我不知道很多事情。有任何想法吗?

谢谢!

4

2 回答 2

2

我在这里猜了一点,但我认为你想要:

SELECT Authorizations.*, anotherTable.description
FROM 
(
    SELECT MAX(authorization_date) AS max_date, request_id
    FROM Authorizations
    GROUP BY request_id
) last_auths
INNER JOIN Authorizations ON last_auths.max_date = Authorizations.authorization_date
    AND last_auths.request_id = Authorizations.request_id
INNER JOIN anotherTable ON anotherTable.role_id = Authorizations.role_id

派生表将获得每个请求的最大授权日期。然后您可以加入以获取该请求的 role_id 并再次加入以获取描述。

于 2012-08-10T05:11:02.433 回答
0
SELECT d.role_desc, a.role_id, MAX(a.authorization_date)
FROM Authorizations a
INNER JOIN Description d ON a.role_id = d.role_id
GROUP BY a.role_id, d.role_desc, d.role_id

试试这个查询并确保你得到预期的结果。

于 2012-08-10T05:13:58.593 回答