Matthias Becker
Grünschnabel
mySQL 5: Update mit den jeweils letzten Werten einer anderen Tabelle
Hallo zusammen,
war gar nicht so einfach den Titel zu benennen und ehrlich gesagt bin ich immer noch nicht zufrieden damit
Ich möchte die Datensätze einer Tabelle mit den Daten einer anderen Tabelle updaten. Schwierigkeit (für mich) liegt dabei, dass es jeweils die letzten Datensätze einer bestimmten ID sein sollen:
Der Inhalt der ersten Tabelle node_comment_statistics:
| nid | last_comment_timestamp | last_comment_uid |
|------+------------------------+------------------|
| 1117 | 1283527141 | 2205 |
| 1118 | 1283527098 | 1205 |
die zweite Tabelle comments:
| cid | nid | uid | timestamp |
|-----+------+------+------------|
| 1 | 1118 | 1205 | 1283527098 |
| 2 | 1117 | 2205 | 1283527141 |
| 3 | 1118 | 1214 | 1283527210 |
| 4 | 1118 | 4711 | 1283527230 |
| 5 | 1117 | 1815 | 1283527277 |
In diesem Beispiel sollte die abzuändernde Tabelle nod_comment_statistics eigentlich so aussehen:
| nid | last_comment_timestamp | last_comment_uid |
|------+------------------------+------------------|
| 1117 | 1283527277 | 1815 |
| 1118 | 1283527230 | 4711 |
Meine folgende Abfrage dated aber leider nur die erste Zeile (nid: 1117) ab:
Kann mir jemand weiterhelfen?
Viele Grüße
Matthias
Hallo zusammen,
war gar nicht so einfach den Titel zu benennen und ehrlich gesagt bin ich immer noch nicht zufrieden damit

Ich möchte die Datensätze einer Tabelle mit den Daten einer anderen Tabelle updaten. Schwierigkeit (für mich) liegt dabei, dass es jeweils die letzten Datensätze einer bestimmten ID sein sollen:
Der Inhalt der ersten Tabelle node_comment_statistics:
| nid | last_comment_timestamp | last_comment_uid |
|------+------------------------+------------------|
| 1117 | 1283527141 | 2205 |
| 1118 | 1283527098 | 1205 |
die zweite Tabelle comments:
| cid | nid | uid | timestamp |
|-----+------+------+------------|
| 1 | 1118 | 1205 | 1283527098 |
| 2 | 1117 | 2205 | 1283527141 |
| 3 | 1118 | 1214 | 1283527210 |
| 4 | 1118 | 4711 | 1283527230 |
| 5 | 1117 | 1815 | 1283527277 |
In diesem Beispiel sollte die abzuändernde Tabelle nod_comment_statistics eigentlich so aussehen:
| nid | last_comment_timestamp | last_comment_uid |
|------+------------------------+------------------|
| 1117 | 1283527277 | 1815 |
| 1118 | 1283527230 | 4711 |
Meine folgende Abfrage dated aber leider nur die erste Zeile (nid: 1117) ab:
Code:
UPDATE node_comment_statistics AS n,
(
SELECT comments.cid, comments.nid, comments.uid, comments.timestamp
FROM comments, node_comment_statistics
WHERE comments.nid=node_comment_statistics.nid
ORDER BY cid DESC LIMIT 1
) AS c
SET n.last_comment_timestamp=c.timestamp,
n.last_comment_uid=c.uid
WHERE n.nid=c.nid
Kann mir jemand weiterhelfen?
Viele Grüße
Matthias
Zuletzt bearbeitet: