Frank (no reg): Spezielle SQL Abfrage mit Gruppierung!

Beitrag lesen

Hallo,

Ein JOIN ist doch nur notwendig wenn ich 2 Tabellen mit einander verknüpfen möchte!

a) mit JOINs kann man auch auf sich selbst verknüpfen ... macht recht häufig auch einen gewissen Sinn

Es gibt aber keine extra Tabelle für die Gruppen, sondern es ist eine Spalte in der Tabelle in die immer der entsprechende String eingetragen wird.

b) ich bin davon ausgegangen, dass du ein halbwegs normalisiertes Datenmodell hast (Gruppen und Termine) - leider eine Fehlannahme. Aber vielleicht solltest du dem Thema Normalisierung ein Quentchen Aufmerksamkeit schenken?

c) verwende a)

Pro Gruppe solltest du den nächsten Termin wie folgt bekommen ...

  • selektiere alle Termine deren Datum grösser als "heute" ist
      ``date_start >= '$current_timestamp'
  • gruppiere die Ergebnismenge nach dem Feld "Gruppe" (hach, wie einleuchtend?)
      SELECT Gruppe...
      GROUP BY Gruppe
  • ziehe für jede Gruppe mithilfe der Aggregatsfunktion MIN das kleinste date_start an
      SELECT Gruppe, MIN(date_start) AS erstesdatum ....

Im Schritt 2 suchst du mithilfe eines JOINS alle Datensätze raus, die in Gruppe und date_start mit der obigen Ergebnismenge übereinstimmen

Probiers mal .. das war jetzt mal so aus dem Hut gezogen ...

Ansonsten, genereller Rat: Zerlege dein GROSSES PROBLEM in kleine probleme, die du einfach einzeln einfacher lösen kannst.

Ciao, Frank