mabue88
Goto Top

MySQL - Aktuellste Datensätze aus Tabelle ermitteln

Hallo,

ich habe eine Tabelle "aktionen_log" mit den folgenden Spalten
- id
- uhrzeit
- benutzer
- aktion

In der Tabelle werden Aktionen von Benutzern abgelegt.

Das Ergebnis der Abfrage
Select * from aktionen_log
könnte z.B. so aussehen:
id	uhrzeit	benutzer		aktion
---------------------------------------------------
1	20:00	user1		Aktion 1 ausgeführt
2	20:01	user3		Aktion 1 ausgeführt
3	20:02	user1		Aktion 2 ausgeführt
4	20:03	user2		Aktion 1 ausgeführt
5	20:04	user1		Aktion 1 ausgeführt
6	20:05	user2		Aktion 2 ausgeführt


Nun benötige ich einen View, dessen Ergebnis lediglich die letzte Aktion jedes Benutzers anzeigt, z.B.:
id	uhrzeit	benutzer		aktion
---------------------------------------------------
2	20:01	user3		Aktion 1 ausgeführt
5	20:04	user1		Aktion 1 ausgeführt
6	20:05	user2		Aktion 2 ausgeführt

Als Abfrage bekomme ich das hin:
SELECT *
FROM aktionen_log
INNER JOIN(
	SELECT MAX(id) AS aktuelle_id, benutzer
	from aktionen_log
	group by benutzer)
AS select2
ON select2.aktuelle_id = aktionen_log.ig

Wenn ich die Abfrage aber in einen View packe, kommt die Fehlermeldung:
ERROR: Error 1349: View's SELECT contains a subquery in the FROM clause  
.
.
.
Fetching back view definitions in final form.
Could not get definition for funk.fahrzeugstatus from server
Could not get definition for funk.aktuelle_status_meldungen_ids from server
3 views were read back.

Wie bekomme ich das in einer View umgesetzt?

Danke

Content-Key: 265241

Url: https://administrator.de/contentid/265241

Printed on: April 23, 2024 at 09:04 o'clock

Member: LianenSchwinger
LianenSchwinger Mar 05, 2015 at 06:27:31 (UTC)
Goto Top
Hallo mabue88,

in MySql besteht für Views die Beschränkung, dass kein Unterabfrage im Select-Statement benutzt werden kann.
In Deinem Fall musst Du wohl einen 2. View mit der Unterabfrage erstellen.

G Jörg
Mitglied: 114757
114757 Mar 05, 2015 updated at 07:28:04 (UTC)
Goto Top
Moin,
machs doch so
SELECT MAX(id) as id, uhrzeit,benutzer,aktion FROM aktionen_log GROUP BY Benutzer
Gruß jodel32
Member: mabue88
mabue88 Mar 05, 2015 at 07:43:25 (UTC)
Goto Top
@LianenSchwinger:
Das würde gehen!

@114757:
Mit der Abfrage bekomme ich zwar die höchste ID jedes Benutzers, aber die Daten in den Spalten 'uhrzeit' und 'aktion' sind nicht unbedingt die, welche zu der jeweiligen ID gehören...
Mitglied: 114757
114757 Mar 05, 2015 updated at 07:58:28 (UTC)
Goto Top
Mit der Abfrage bekomme ich zwar die höchste ID jedes Benutzers, aber die Daten in den Spalten 'uhrzeit' und 'aktion' sind nicht unbedingt die, welche zu der jeweiligen ID gehören...
?? Könnte ich hier nicht nachvollziehen ...
Klappt hier wunderbar ohne Fehler und falscher Zuordnung !