OK、次のような 2 つのテーブルがあります。
Person:
| ID | Name |
+----+------+
| 0 | Carl |
+----+------+
| 1 | Max |
+----+------+
| 2 | Lars |
Status
| PersonID | Submitted | Status |
+----------+------------+--------+
| 0 | *DATETIME* | 1 |
+----------+------------+--------+
| 0 | *DATETIME* | 1 |
+----------+------------+--------+
| 0 | *DATETIME* | 3 |
+----------+------------+--------+
| 0 | *DATETIME* | 1 |
+----------+------------+--------+
| 1 | *DATETIME* | 5 |
+----------+------------+--------+
私が受け取りたいのは、最後に送信されたステータスのユーザー テーブル内のすべての人を取得することです。
私がこのようなものを使用する場合:
SELECT DISTINCT
Person.Name As Username,
Status.Status As Userstatus
FROM Person
LEFT JOIN Status
ON Status.PersonID = Person.ID
次のような結果が得られます。
| Username | Userstatus |
+----------+------------+
| Carl | 1 |
+----------+------------+
| Carl | 3 |
+----------+------------+
| Max | 5 |
+----------+------------+
| Lars | NULL |
+----------+------------+
それで、どうすればこれを行うことができますか?この場合、最新の Status.Submitted が ==1 (PersonID == 0 の Status.PersonID の最後の行) であるとしましょう。他の Carls はスキップします。
編集: SQL Compact を使用していることを書き忘れていました。
Edit2:素晴らしい回答がいくつかありましたが、残念ながら、ステータス値がnullのユーザーも取得したいことを忘れていました。そこで、新しいユーザーをテーブルに追加しました