GROUP BY mit String-Vergleich
Volker Nebelung
- datenbank
Aloha 'oe,
ich habe folgendes Problem mit einer MySQL-Abfrage:
In einer Tabelle habe ich eine Spalte 'datei' mit folgenden Beispielwerten:
123456.789
123456.888
123456.906
765432.111
765432.765
567892.098
567892.654
usw.
Nun will ich darüber eine Abfrage laufen lassen, die mir das gleiche liefert wie
SELECT * FROM tabelle GROUP BY 'den ersten sechs Buchstaben von datei'
Wie kann ich diese Anfrage formulieren? Ich bin momentan recht ansatzlos ...
Danke im Voraus.
Gruß, Volker
Hallo Volker,
In einer Tabelle habe ich eine Spalte 'datei' mit folgenden Beispielwerten:
123456.789
123456.888
usw.Nun will ich darüber eine Abfrage laufen lassen, die mir das gleiche liefert wie
SELECT * FROM tabelle GROUP BY 'den ersten sechs Buchstaben von datei'
MySQL kennt die Zeichenkettenfunktion LEFT().
Freundliche Grüße
Vinzenz
MySQL kennt die Zeichenkettenfunktion LEFT().
Und ich brech mir hier einen ab mit dem Versuch, LIKE passend einzusetzen ...
Warum einfach, wenn es auch kompliziert geht ... ;-)
Passt - danke.
Gruß, Volker
Hi Volker,
Nun will ich darüber eine Abfrage laufen lassen, die mir das gleiche liefert wie
SELECT * FROM tabelle GROUP BY 'den ersten sechs Buchstaben von datei'
Wenn du alles Anzeigen willst, was willst du dann GROUPieren? Das ist technisch sinnfrei zusammen mit der Verwendung von * (bei * sowieso).
Es würde quasi erst Sinn, wenn du weitere Aggregatsfunktionen wie Count() verwendest, à la
SELECT LEFT(datei, 6) AS feldA, COUNT(*)
FROM tabelle
GROUP BY LEFT(datei, 6)
denn da willst du ja gruppiert zählen, wie oft welche eindeutige Zusammensetzung von 6 Zeichen in der Tabelle vorkommt.
Dass MySql solche eine Abfrage mit * und GROUP BY unterstützt/erlaubt, ist ein Fehlverhalten. Versuche dich bitte davon zu lösen. Was du "abfragen" möchtest, kann man 100pro auch auf andere Varianten lösen.
Ciao, Frank
Dass MySql solche eine Abfrage mit * und GROUP BY unterstützt/erlaubt, ist ein Fehlverhalten. Versuche dich bitte davon zu lösen. Was du "abfragen" möchtest, kann man 100pro auch auf andere Varianten lösen.
Das * habe ich nur der Einfachheit ins Beispiel geschrieben, es kam auf den Teil dahinter an, mit dem ich Probleme hatte.
Von Sternchen bin ich sonst sowas von gelöst - wow :-).
Gruß, Volker
Hi,
abgesehen vom Sternchen selbst, sollten unter den selektierten Spalten auch nur die stehen
Alle anderen haben dort semantisch nichts verloren. Jedes halbwegs vernünftige (nach Standards operierende) DBMS würde dir sonst einen Fehler liefern. :)
Nur so der Vollständigkeit halber. :)
Ciao, Frank