私のデータベースがどのように見えるかをいくつかのサンプルデータで示すことから始めましょう:
| id | type | id_user | date |
| 0 | 0 | 1 | 1 |
| 1 | 0 | 2 | 2 |
| 2 | 1 | 1 | 3 |
| 3 | 0 | 3 | 4 |
| 4 | 0 | 1 | 5 |
| 5 | 1 | 1 | 6 |
これが追跡しているのは、人々がグループを脱退または参加したときであり、グループに何人の人がいるかを取得しようとしています.
たとえば、このテーブルの履歴は次のようになります: (タイプ 0 = 結合、タイプ 1 = 葉)
user 1 joins at time 1
user 2 joins at time 2
user 1 leaves at time 3
user 3 joins at time 4
user 1 joins at time 5
user 1 leaves at time 6
したがって、グループ内の人数を照会する場所を指定すると、ユーザー 1 が 2 回離れており、現在グループにはユーザー 2,3 しかいないため、2 になります。
私は過去1時間半遊んでいますが、何も機能しないようです。MAX() は、正しい結果だと思うものを返さないため、本当に混乱しています (ただし、完全に間違ったことをしていることはわかっています)。
SELECT *,MAX(date) from myTable GROUP BY id_user
上記は私の現在の考えですが、私が望むものは何も与えていません。
私は PHPMyAdmin に入り、最大の日付を取得するためだけに非常に単純な MAX() を試しました (ORDER BY date DESC でそれを実行できることは知っていますが、それは私が探しているものではありません。これは単なるテストです):
SELECT *,MAX(date) from myTable
ただし、これはリストの最初の行を返します。だから私はもう少し遊んで、 D として MAX(date) を入れました。
| id | type | id_user | date | D |
| 0 | 0 | 1 | 1 | 6 |
これをグーグルで検索して、他のSOの質問を調べましたが、問題を解決するものは見つかりません。MAX で私が間違っていることを誰かが知っている場合、またはこれに対するアプローチについて提案がある場合は、本当に感謝しています。(私の質問はもっと集中的にしなければならないと感じています。) とにかく、ありがとう。