我想知道用户上次上线的日期以及他上次玩的游戏。但是我得到的不是单组组功能错误

时间:2014-10-31 08:42:28

标签: sql oracle

我的查询如下

SELECT 
    GEBRUIKERS.GEBRUIKERID, GEBRUIKERS.GEBRUIKERNAAM,
    LAATSTONLINE,GAME.GAMENAAM,
    MAX(ITEMS_IN_BEZIT.LAATSTGEBRUIKT) AS "Laatst gespeelde game"
FROM 
    GEBRUIKERS
LEFT OUTER JOIN 
    ITEMS_IN_BEZIT ON GEBRUIKERS.GEBRUIKERID = ITEMS_IN_BEZIT.GEBRUIKERID
LEFT OUTER JOIN 
    GAME ON ITEMS_IN_BEZIT.ITEMID = GAME.ITEMID
ORDER BY 
    GAME.GAMENAAM

此查询应该为我提供上次在线时用户ID的用户名以及他上次玩哪个游戏

但是我收到了标题中提到的错误。

现在我的问题是:是否有更好的方法来制定我的查询,或者有办法解决这个错误

1 个答案:

答案 0 :(得分:1)

使用聚合函数时,您必须GROUP BY

SELECT GEBRUIKERS.GEBRUIKERID, 
       GEBRUIKERS.GEBRUIKERNAAM, 
       LAATSTONLINE, 
       GAME.GAMENAAM, 
       MAX(ITEMS_IN_BEZIT.LAATSTGEBRUIKT) AS "Laatst gespeelde game" 
FROM   GEBRUIKERS 
       LEFT OUTER JOIN ITEMS_IN_BEZIT 
                    ON GEBRUIKERS.GEBRUIKERID = ITEMS_IN_BEZIT.GEBRUIKERID 
       LEFT OUTER JOIN GAME 
                    ON ITEMS_IN_BEZIT.ITEMID = GAME.ITEMID 
GROUP  BY GEBRUIKERS.GEBRUIKERID,   -- here
          GEBRUIKERS.GEBRUIKERNAAM, 
          LAATSTONLINE,             
          GAME.GAMENAAM             
ORDER  BY GAME.GAMENAAM