2009-06-29 6 views
1

私は2つのテーブル、ユーザとノートを持っているとしましょう。のは、スキーマは次のようになりましょう:1:nテーブルから1つのクエリで最新のノート(タイムスタンプ別)を取得する

users 
id, name, field2, field3 

notes 
id, user_id, subject, heading, body, timestamp 

は、私は何をしたいすべてのユーザー、および概要レポートに表示するタイムスタンプに基づいて、各ユーザーによって投稿さLATEST(ちょうど1)ノートを選択しています。

どうすればいいですか? DBはMySQLであることに注意してください。

ありがとうございます!

+0

このを見て価値があるかもしれません:http://stackoverflow.com/questions/881198/how-do-i-join-to-the-latest-record-in-the-table –

答えて

2
select users.name, notes.subject, notes.heading, notes.body 
from users, notes 
where users.id = notes.user_id 
and notes.timestamp = (select max(timestamp) from notes where user_id = users.id) 
+0

私はこの答えを使用して終了しました。私はいくつかの変更が必要でしたが、最終的には効果がありました! ありがとうございます。 – hellopat

1

ユーザーが正確に同じタイムスタンプを持つ2つの音符を持つ場合、これは重複を返す可能性があることに注意してください。私はこれが当てはまらないと仮定しています。

0
SELECT * 
FROM `users` 
LEFT JOIN `notes` 
ON `user_id` = `users`.`id` 
WHERE `notes`.`timestamp` = (
    SELECT MAX(`timestamp`) 
    FROM `notes` AS `notes_1` 
    WHERE `notes_1`.`user_id` = `notes`.`user_id` 
) 
関連する問題