bugfix> mysql > 投稿

テストの目的で、私のテーブルは特定の到着と出発を記録します(予約タイプ=「到着」または「出発」)。

構造が次のとおりであると仮定しましょう:

ID (PK), RFID, Date, Time, Booking type

自分の登録を忘れた人を見つけたい最終 特定の日付の出発。

私の考えは、各RFID(個人)の最後の(最高のID?)予約が「出発」に等しいかどうかを調べることです。

誰かが私にヒントを与えてくれますか?

前もって感謝します

編集:データを使用した例

1, 12345, 20.05.2018, 10:00, arrival

2, 44444, 20.05.2018, 10:30, arrival

3, 12345, 20.05.2018, 14:00, departure

4, 44444, 20.05.2018, 15:00, departure

5, 44444, 20.05.2018, 16:00, arrival

6, 12345, 20.05.2018, 17:00, arrival

7, 44444, 20.05.2018, 19:00, departure

ユーザー12345 その日の「最後の」出発を記録するのを忘れていました。私は彼/彼女を見せてほしい(他の目的のために出力をパイプしたいので)。

回答 1 件
  • 各ユーザーのその日の最後のエントリが出発であったかどうかを知りたい場合は、これを試してください。

    SELECT t1.RFID
    FROM yourTable t1
    INNER JOIN
    (
        SELECT RFID, MAX(Time) AS max_time
        FROM yourTable
        WHERE Date = '2018-05-20'
        GROUP BY RFID
    ) t2
        ON t1.RFID = t2.RFID AND t1.Time = t2.max_time
    WHERE
        t1.Date = '2018-05-20'
        t1.booking_type = 'arrival';
    
    

    ここでの戦略は、特定の日の各ユーザーの最新のレコードを分離し、そのレコードの予約タイプを確認することです。

あなたの答え