0

私は常に最新のエントリを参照として使用してエントリのリストを提供する次のクエリを持っています。(MAX(id)) .. ただし、max(id) は常に最新のエントリであるとは限りません ..

最新の日付でエントリのIDを取得することはどういうわけか可能ですか(テーブルにはunixtimeの日付フィールドがあります)

現在のクエリ

SELECT tr.id,user.ispro as ispro, user.id as user_id,tr.balance_e, user.paypal FROM tr
RIGHT join user on tr.user_id=user.id
INNER JOIN (SELECT MAX(id) as maxid FROM tr where tr.status='ok'
GROUP BY tr.user_id order by tr.date desc) la 
ON la.maxid = tr.id
WHERE tr.status='ok' and tr.balance_e >= ".$mincredit." 
ORDER BY tr.balance_e desc;

エントリが更新されるたびに (日付)、INNER JOIN が MAX(id) を使用するため、出力が正しくありません ... 日付フィールドが最新のものであるエントリの ID を常に持つように変更する方法はありますか?

4

1 に答える 1

1

代わりにこれを試してください:

SELECT 
  tr.id, 
  user.ispro as ispro, 
  user.id as user_id,
  tr.balance_e,
  user.paypal 
FROM tr
INNER JOIN 
(
   SELECT user_id, MAX(date) as maxdate
   FROM tr 
   where tr.status='ok'
   GROUP BY tr.user_id
) la ON tr.user_id = la.user_id AND tr.date = la.maxdate
RIGHT join user on tr.user_id=user.id 
WHERE tr.status     = 'ok'
  and tr.balance_e >= ".$mincredit." 
ORDER BY tr.balance_e desc;
于 2013-06-03T14:55:11.020 に答える