Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SELECT mit GROUP BY, aber nur neuesten Datensatz ausgeben!

Empfohlene Antworten

Hallo Leute,

ich steh vor nem Problem das ich bisher - auch mit Hilfe von anderen Foren - noch nicht elegant lösen konnte.

Es geht darum, dass User in einer WebEingabemaste Einträge verfassen können, und diese auch immer eine Art "Zugehörigkeits-Nummer" bekommen (keine ID der DB, sondern mehr so eine Sortiernummer).

Wenn ein Eintrag mit einer Nummer gemacht wird, die schon besteht, so wird der bestehende Beitrag nicht gelöscht, sondern ein neuer Angelegt und in Ausgabe (Tabellarisch) kommen dann nur die Einträge zur Nummer, die das aktuellste Datum haben.

Zu allen Beitägen, die einer Nummer zugehören, gelangt man dann über einen Link.

Nun mein Problem ist, dass ich zwar über GROUP BY die Nummern gruppieren kann und über MAX(datum) das zugehörige aktuelle Datum bekomme aber dann nicht den zum aktuellsten Datum zugehörigen Beitrag (also alle sonstigen Felder). Selbst die wildesten Sortierungen (ASC und DESC) haben nicht geholfen!


SELECT `ifc_content`.`1` , max( `ifc_content`.`2` ) , `ifc_content`.`3` , `ifc_content`.`4` , `ifc_content`.`5` , `ifc_content`.`73` , `ifc_content`.`74` , `ifc_content`.`77` , `ifc_content`.`78` , `ifc_content`.`79` , `ifc_content`.`85` , `ifc_content`.`86` , `ifc_content`.`87` , dat_user.u_unumber, dat_group.g_groupname, 

DATE_FORMAT( max( `ifc_content`.`2` ) , '%d.%m.%Y %H:%i:%s' ) AS datum_f

FROM `ifc_content` , `dat_user` , `dat_group` 

WHERE `ifc_content`.`1` = `dat_user`.`u_id` 

AND `ifc_content`.`4` = `dat_group`.`g_id` 

GROUP BY `ifc_content`.`3` DESC 

ORDER BY `1` ASC 

Da die Spalten quasi dynamisch angelegt sind haben sie keine Namen sondern Nummern... die Nummern sind die IDs von angelegten Datensätzen in einer anderen Tabelle, die dann die Spalteninhalte (Name, Typ, ...) beschreiben.

2 ist Datum und 1 ist Autor, 3 ist die interne Nummer, nach der gruppiert werden soll...

vielleicht hat ja jemand eine Idee?!

Meine Idee ist es vielleicht noch, eine extra Spalte anzulegen die "mod" heisst, und immer wenn ein neuer Eintrag gemacht wird, wird in dem bestehenden Eintrag das "mod" auf 1 gesetzt.

Dann muss ich nur noch nach "mod = 0" suchen? was haltet ihr davon?

Grüße Flo

Es ist jetzt zwar schwer das anchzuvollziehen, aber du hast order by 1 und nicht by 2.

Wenn du nach dem Datum absteigend sortierst, dann kriegst du das Aktuellste.

Dann noch "Limit 1" hinten dran hängen und du hast genau einen Datensatz.

Aber vielleicht hab ichs jetzt auch bloß nicht verstanden, dann entschuldige mich bitte.

Hi...

zum ORDER BY geb ich dir recht, es funktioniert aber auch so nicht, weil das GROUP By "stärker" ist...

LIMIT bringt nix, weil ich ja alle Datensätze haben will, davon aber nur die mit den aktuellsten Daten.

Habs jetzt über das "flag" gelöst, teste also auf den "mod", wenn das 0 ist ist ein aktueller Eintrag, wenn 1 dann ein alter für die History

Danke trotzdem... wenn jemand ne gute Lösung hat würds mich trotzdem interessieren :P

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.