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.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe z.B. folgende Tabelle

Feld1 | Feld2 | VERSION |

--------------------------

d1 | aaa | 1 |

d1 | aaa | 2 |

d2 | bbb | 1 |

Jetzt möchte ich eine Abfrage machen, die mir jeweils den Datensatz mit der höchten Version zurückgibt

Bei d1 wäre das also der Datensatz mit der Version 2 und bei d2 mit Version 1

Die AAbfrage würde mir also in diesem Beispiel 2 Datensätze zurückgeben

Wie mach ich das?

schau dir mal aggregatfunktionen an ;)

Ich hatte schon folgendes probiert was aber anscheinend nicht geht

WHERE VERSION=MAX(VERSION)

aggregatfunktionen kannst du in der WHERE klausel nicht direkt verwenden.

Dazu benötigst du ein subselect.

versuch mal: SELECT feld2 FROM tabelle WHERE version=(SELECT MAX(version) from tabelle WHERE feld1=d1) AND feld1=d1;

Bearbeitet von 0815FIA

ups, glatt die softquotes vergessen -.-, sry

SELECT feld2 FROM tabelle WHERE version=(SELECT MAX(version) FROM tabelle WHERE feld1="d1") AND feld1="d1";

Da bekommst du ja nur die höchste Version von d1.

Für d2, d3 etc müsste jedesmal ne neue Abfrage geschrieben werden.

Ich würde es so lösen:

SELECT Feld1, MAX(Version) FROM tabelle GROUP BY(Feld1)

Bearbeitet von Astra-Ben

Ich würde es so lösen:

SELECT Feld1, MAX(Version) FROM tabelle GROUP BY(Feld1)

hast recht, weitaus sinniger :)

bis auf das vielleicht feld2 selected werden sollte.

Bearbeitet von 0815FIA

so, ich hab mich gestern abend nochmal kurz mit diesem thema beschäftigt, und unsere beiden "Lösungen" waren leider schwachsinn. man braucht hier einen korrelierten subselect. die richtige lösung lautet:

SELECT * FROM tabelle AS t1 WHERE version=(SELECT MAX(version) FROM tabelle AS t2 WHERE t1.feld1=t2.feld1);

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

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.