Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MySQL - Anzahl der Datensätze in Abfrage verringern

Frage Entwicklung Datenbanken

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

15.12.2014 um 11:54 Uhr, 1003 Aufrufe, 4 Kommentare

Hallo,

ich habe ein System, in dem dessen Benutzer diverse Aktionen ausführen können. Die von den Benutzern ausgelösten Aktionen werden in einer MySQL-Tabelle gespeichert. Mit der Zeit sammeln sich recht viele Datensätze in der Tabelle.

Für einen groben Überblick wird eine Abfrage benötigt, welche von jedem Benutzer die letzten 20 Aktionen filtert.

Wie kann ich so etwas umsetzen?

Die Tabelle besitzt folgende Spalten:
- ID (INT UNSIGNED)
- Uhrzeit (DATETIME)
- Benutzername (VARCHAR)
- Aktion (VARCHAR)

Danke
Gruss
mabue88
Mitglied: Doskias
15.12.2014, aktualisiert um 12:01 Uhr
Moin

Versuch mal:

select * from [tabellenname] order by Uhrzeit desc limit 20

Das sollte deine Anzeige wie gewünscht anpassen.
Bitte warten ..
Mitglied: mabue88
15.12.2014 um 12:01 Uhr
Hallo Doskias,

danke für den Hinweis, aber das ich nicht genau das was ich suche.
Ich benötige nicht die letzten 20 Aktionen, sondern die letzten 20 Aktionen von jedem Benutzer...

Gruss
mabue
Bitte warten ..
Mitglied: Doskias
15.12.2014, aktualisiert um 12:12 Uhr
Achso, habe ich missverstande. In einer Abfrage oder in mehreren?

01.
 select * from [tabellenname]  where Benutzername= "name"  order by Uhrzeit desc limit 20. 


Und dann entsprechend eine Abfrage pro Name. Sonst würde mir nur die Idee einfallen das ganze zu verschachteln. Habe aber grade SQL-Test-DB zur Hand, aber so könnte es gehen:

01.
 select * from Tabelle where  
02.
(select * from [tabellenname] where Benutzername= "name" order by Uhrzeit desc limit 20.) OR 
03.
(select * from [tabellenname] where Benutzername= "name2" order by Uhrzeit desc limit 20.) OR 
04.
(select * from [tabellenname] where Benutzername= "name3" order by Uhrzeit desc limit 20.) ...


So müsste es theoretisch gehen, aber wie gesagt: Der Code ist aus dem Kopf und SQL ist nicht mein Spezialgebiet. Vielleicht hat jemand ne elegantere Lösung. ;)
Bitte warten ..
Mitglied: Gersen
15.12.2014 um 13:33 Uhr
Hallo,

ungetestet (und für den Fall, die Einträge im Feld "aktion" beinhalten kein ","):
select benutzername, substring_index(group_concat(aktion order by uhrzeit desc),',',20) grouped_aktion from tabellenname group by benutzername
Gruß,
Gersen
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst MySQL Function Anzahl Datensätze ermitteln (4)

Frage von MultiStorm zum Thema Datenbanken ...

Microsoft Office
gelöst Automatisch entscheiden ob prozentual oder fest anzahl von Datensätze (7)

Frage von hugothemagpie zum Thema Microsoft Office ...

Datenbanken
gelöst MySQL Abfrage um JOIN erweitern (14)

Frage von datadexx zum Thema Datenbanken ...

PHP
gelöst MySQL Update eines Datensatz mit Variable (4)

Frage von Jens4ever zum Thema PHP ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Server
Kennwort vergessen bei Hyper vserver 2012r (12)

Frage von jensgebken zum Thema Windows Server ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...

Windows Userverwaltung
gelöst Administrator hat alle Rechte verloren (10)

Frage von mrdead zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Gebäude mit WLAN ausstatten (9)

Frage von udobec zum Thema LAN, WAN, Wireless ...