mySQL: SUBSTRING_INDEX + GROUP_CONCAT

Vor einiger Zeit hatte ich das Problem, dass ich mit GROUP_CONCAT unter mySQL eine Gruppe zu einem einzelnen String zusammengeführt habe, aber die Gruppe sehr viele Elemente enthielt. Da das Ergebnis in einer Tabelle ausgegeben werden sollte, wurde der Wert entsprechend zu lang. Also wollte ich diesen, anhand eines Delimiters, auf eine gewisse Anzahl beschränken.

Um dies zu erreichen wollte ich allerdings weder PHP verwenden, noch die Datenbank mit komplexen und geschachtelten String-Funktionen belasten. Und auch für dieses Problem gab es tatsächliche eine sehr einfache Lösung: SUBSTRING_INDEX schmeißt ab einem vorgegebenen Trennzeichen an gewünschter Position (in diesem Fall die dritte) alles weg was noch kommt.

Hier noch ein Beispiel: Ich möchte aus einer Tabelle alle Benutzer und die dazugehörigen e-Mailadressen haben (maximal jedoch nur drei Stück). Ein Benutzer kann also mehrfach mit verschiedenen Adressen in der Tabelle Users eingetragen sein. Das ist zwar kein besonders schönes Datenmodell, zeigt jedoch sehr einfach die Verwendung der Funktionen.

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.