0

タイトルが漠然としすぎていないことを願っていますが、説明します。私は高度なクエリにはかなり慣れていないので、残念ながら、これは「これを試している」というよりも、「どうすればこれを行うことができるか」というタイプの質問です。

ユーザーアクティビティの表があります。彼らがサイトで何かをすると、このデータベースに入力されます。残念ながら、ログインの追跡方法が変更されました。そのため、各ユーザー ID のすべてのレコードを検索し、各レコードの日付を確認して、その日付に特定の ID を持つレコードがあるかどうかを確認する必要があります。

わかりにくいと思うので、できる限り最適なプログラミング ロジックに分解します。

  1. user_id のレコードのリストを日付順に取得する
  2. 日付ごとに、id 5 が存在するかどうかを確認します
  3. ID 5 が存在しない場合は、教えてください

基本的に、その日付に基づいて、その ID が存在しないテーブルにその ID を挿入します。

どんな助けでも大歓迎です。前もって感謝します。

編集 ** ここに基本構造を追加するのを忘れていました。

id      | user_id      | item_id     | stamp
------------------------------------------------------
1       | user1        | 1           | 2012-08-25
2       | user1        | 2           | 2012-08-25
3       | user1        | 3           | 2012-08-25
4       | user1        | 4           | 2012-08-25
5       | user1        | 6           | 2012-08-25
6       | user1        | 7           | 2012-08-25
7       | user1        | 5           | 2012-08-26
8       | user1        | 11          | 2012-08-26
9       | user1        | 13          | 2012-08-26

というわけで基本構造です。User1 には ID 5 が2012-08-25ないため、その日付で追加する必要があります。user1 には id 5 が欠落して2012-08-26いないので、何も挿入する必要はありません。それは何かを明確にしますか?

4

1 に答える 1

1
SELECT   user_id, stamp
FROM     my_table
GROUP BY user_id, stamp
HAVING   NOT SUM(item_id=5)

サンプル データを使用した実際の SQLFiddle の例を次に示します: http://sqlfiddle.com/#!2/1ccf5/5

于 2012-08-29T13:38:57.743 に答える