0

と の 2 つのテーブルがUserありSessionます。各ユーザーについて、セッション テーブルの最後のレコードが昨年作成されたかどうかを知りたいです。

次のことを試しましたが、うまくいきません。

SELECT *
FROM(
    SELECT MAX(`Session`.acDateF) as MaxDateF
    FROM `Session`
    WHERE `Session`.acType='1'
) as AcDate
GROUP BY `Session`.userId) 
WHERE YEAR(`Session`.acDateF) =YEAR(CURRENT_DATE())-1

Sessionユーザーが今年テーブルにレコードを持っている場合、結果には表示されません。

4

3 に答える 3

2

あなたの質問はあまり明確ではありませんが、次のようなものが必要なようです。

SELECT * 
FROM `Session` s
INNER JOIN 
(
    SELECT MAX(`Session`.acDateF) as MaxDateF, `Session`.userId
    FROM `Session`
    WHERE `Session`.acType='1'
        AND YEAR(s.acDateF) =YEAR(CURRENT_DATE())-1
    GROUP `Session`.userId
) as AcDate
    ON s.userId = AcDate.userId
    AND s.acDateF = AcDate.MaxDateF;

または、ユーザーデータが必要な場合:

SELECT * 
FROM `user` u
INNER JOIN 
(
    SELECT MAX(`Session`.acDateF) as MaxDateF, `Session`.userId
    FROM `Session`
    WHERE `Session`.acType='1'
        AND YEAR(s.acDateF) =YEAR(CURRENT_DATE())-1
    GROUP `Session`.userId
) as AcDate
    ON u.userId = AcDate.userId;    
于 2013-01-10T15:33:38.320 に答える
0
SELECT
    MAX(`Session`.acDateF) as MaxDateF,
    `Session`.userId
FROM `Session`
WHERE `Session`.acType='1'
GROUP BY `Session`.userId
having MAX(YEAR(`Session`.acDateF)) as MaxDateF =YEAR(CURRENT_DATE())-1
于 2013-01-10T15:33:16.140 に答える
0

ここに方法があります。句で相関サブクエリを使用してwhere、前年の最後の日付を取得します。

select *
from session s
where s.acDatef = (select MAX(se.acDatef)
                   from session s2
                   where s2.userid = s.userid and
                         YEAR(`Session`.acDateF) =YEAR(CURRENT_DATE())-1
                  )
于 2013-01-10T15:34:05.497 に答える