mysql: group by teilstring
tobi
- datenbank
morgen,
gibt es eine geschickte möglichkeit nach folgendem zu gruppieren.
die feldinhalte sehen so aus: foo|bar|text1, foo|bar|bar2|text1, foo|bar|ba|text2
nun möchte ich, dass nach einer gruppierung nur noch
foo|bar|text1 und foo|bar|ba|text2 zurückgeliefert werden.
d.h. die gruppierung betrifft den teil des strings nach dem letzten '|', also in dem fall text1, text1 und text2.
kann man das irgendwie mit mysql realisieren?
thx
echo $begrüßung;
d.h. die gruppierung betrifft den teil des strings nach dem letzten '|', also in dem fall text1, text1 und text2.
kann man das irgendwie mit mysql realisieren?
Ja, als Gruppierbedingung kann man nicht nur Spaltennamen sondern auf berechnete Werte einsetzen. In deinem Fall dürften dir eine oder mehrere der Stringfunktionen die passende Gruppierbedingung liefern.
echo "$verabschiedung $name";
hi
mit regexp sollte es doch auch gehen, oder? eine entsprechung für strstr bzw strstr_reverse finde ich leider nicht für mysql, daher hoffe ich, dass es mit regexp (einfacher) geht.
aber eine frage dazu:
SELECT 'pipi' REGEXP '^p(.*)pi'; liefert ja 1
aber wenn ich nicht wissen will, ob es vorkommt, sondern, was in den platzhalter gehört, was dann? wie bekomme ich diesen wert?
konnte kein passendes beispiel dafür im manual finden :(
thx
echo $begrüßung;
Mal abgesehen davon, dass du, wie du sicher selbst erkennst, ein schlechtes Datenbankdesign vorliegen hast ...
mit regexp sollte es doch auch gehen, oder?
Du hast doch ein eindeutiges Trennzeichen, | oder Leerzeichen. Die Funktion SUBSTRING_INDEX(str,delim,count) scheint mir passend. Sie gibt einen oder mehrere Teile zwischen diesen Trennzeichen zurück, und zählt mit negativem Wert für count auch von hinten.
Für die Ausabe der Fundstellen solltest du noch beachten: MySQL lässt zwar zu, dass du auch Spalten in die Ausgabe nehmen kannst, nach denen nicht gruppiert wurde, welcher Inhalt (sprich welche Zeile) dann aber in der Ausgabe erscheint ist nicht bestimmbar.
echo "$verabschiedung $name";
Hallo
Für die Ausabe der Fundstellen solltest du noch beachten: MySQL lässt zwar zu, dass du auch Spalten in die Ausgabe nehmen kannst, nach denen nicht gruppiert wurde, welcher Inhalt (sprich welche Zeile) dann aber in der Ausgabe erscheint ist nicht bestimmbar.
Dies führte übrigens zu folgendem Thread.
Freundliche Grüße
Vinzenz