2012-01-20 8 views
0

正しい順序を返さない、私は次のクエリがあります:私は最後の30日以内に、承認され、関係者であるユーザからの最新記事を取得しようとしていますPHPとMySQL - 選択なステートメントが

SELECT DISTINCT user.user_id 
FROM (post INNER JOIN user ON user.user_id = post.user_id) 
WHERE post.red_flag = 0 AND post.approved = 1 
AND user.official = 1 
AND post.activity_date >= '2012-01-13' 
ORDER BY post.activity_date DESC LIMIT 6 

を。

クエリは、user_idの最初の異なる値を見つけて、その行にアタッチされた日付を使用しているようです。これは、特定の順序でテーブルを通過し、user_id 15を見つけてユニークなものとしてフラグを立てます。 user_idが15のレコードが1つおきに渡されます。私が最新の日付で欲しいレコードは、渡されたものです。

最新の投稿を返すにはどうすればよいですか?

答えて

1

投稿を選択していないので、テーブルuserからuser_idを選択しています。あなたがユーザーごとに1つだけのポストを返すようにしたいと思われるよう

SELECT post.id FROM post LEFT JOIN user 
    ON user.user_id = post.user_id 
WHERE post.red_flag = 0 
    AND post.approved = 1 
    AND user.official = 1 
    AND post.activity_date >= '2012-01-13' 
GROUP BY post.user_id 
ORDER BY post.activity_date DESC 
LIMIT 6 

私は GROUP BY句を追加しました:

あなたのテーブル構造を知らなくても、私はあなたのようなものが必要と思います。

関連する問題