私は、関連付けを使用して、ユーザーの訪問のリストを降順で取得する MySQL クエリを作成しました。
SELECT `id`, `name`, `date`
FROM `logs`
WHERE `iid` = ?
ORDER BY `date` DESC';
各ログには がiid, id, name, date
あり、生成された配列には、各行に要求された 3 つの値があります。
データベースの例を次に示します。
| iid | id | name | date |
---------------------------------------------
| 1 | 1 | foo | 2013-09-13 10:14 |
| 2 | 1 | foo | 2013-09-12 08:10 |
| 2 | 1 | foo | 2013-09-11 14:43 |
| 1 | 1 | foo | 2013-09-10 15:12 |
iid
ページ、id
ユーザーIDです。
ここで、4 番目の列を追加する必要があります。この列にはlastvisit
、各ユーザーがそれぞれに前回アクセスした日付が含まれている必要がありますiid
。
したがってlastvisit
、2つに対して2つの異なる値が必要ですiid
。
| iid | id | name | date | lastvisit |
-----------------------------------------------------------------
| 1 | 1 | foo | 2013-09-13 10:14 | 2013-09-12 15:12 |
| 2 | 1 | foo | 2013-09-12 08:10 | 2013-09-11 14:43 |
| 2 | 1 | foo | 2013-09-11 14:43 | null |
| 1 | 1 | foo | 2013-09-10 15:12 | null |
この列をデータベースに追加し、訪問するたびに最新の訪問をチェックしてlastvisit
、新しいエントリに入れる値を取得します。
私の問題は、 の値を持たない、すでに記録されたエントリに関するものですlastvisit
。
次のようなクエリを入力する必要があります。
UPDATE `logs`
SET `lastvisit` = (
SELECT `date`
FROM `logs`
WHERE `id` = ? AND 'iid' = ?
ORDER BY `date` DESC'
LIMIT 0, 1;
)
明らかに、このクエリは機能しません。エントリごとにこのタスクを実行するクエリを作成することは可能ですか?