私は2つのテーブルを持っています。これは、誰かが建物のどこかにその鍵を使用した最後の時間を示してSQLで一致しないレコードのリストを見つける方法は? (何か問題があります)
- ユーザーID
- LastAccessTime
: -
ユーザーは、これらの列を持つユーザーごとに1行があります。
イベント - これらの列ですべてのイベントをログに記録し、ユーザーごとに複数の行があります。
- イベントID
- イベント時刻
- ユーザーID
- これはすべてのインスタンスを示し
をEventTypeID誰かがキーを使用した場所。 EventTypeIDが70の場合は、誰かが建物に入るか、「時計入力」します。
私は、自分のキーを使用しているが、キーを使用して特定の日にエントリーを登録していない人を示すクエリを作成しようとしています。
以下は、これを適切に行っているユーザーのためにtrueになります。
- Users.LastAccessTime>「2017年2月28日」(別名今日の日付)Events.EventTypeIDの
- 最新の場合= 70は同じ行にEvents.EventTime> '2017-02-28'を持っています
しかし、私が必要とするのは建物のルールに従わない人のリストです。
ありがとうございました。あなたがテーブルを結合し、私はあなたの質問を理解している場合
SELECT Users.userID
FROM Users
LEFT JOIN Events ON Users.userID = Events.UserID
AND Events.EventTypeID = 70
AND Events.EventTime >= CONVERT(DATE, GETDATE())
WHERE EventID IS NULL
AND Users.LastAccessTime >= CONVERT(DATE, GETDATE())
ルールは明確ではありません。いくつかのデータサンプルセットを追加してみてください。 –