Nach Teilstring gruppieren

B

ByeBye 251003

Hallo,

ich finde leider keine Lösung und bitte um Hilfe.
Code:
tbl_xy

SPALTE_1
-------------
017test
23test.r
hooh2
had.gg
017test
hooh2
hooh2
testuud
Code:
SELECT COUNT(SPALTE_1) AS ANZAHL, SPALTE_1 
FROM tbl_xy 
GROUP BY SPALTE_1
liefert mir korrekterweise dieses Ergebnis:
Code:
ANZAHL   SPALTE_1
------------------
2        017test
1        23test.r
1        had.gg
3        hooh2
1        testuud
nun soll aber u.a. auch z.B. nach einem Array von Werten ('test','oo') teilweise gruppiert werden, Werte die nicht im Array enthalten sind, sollen natürlich auch und dann nach der kompletten Länge des Strings gruppiert werden ...
Code:
SELECT COUNT(SPALTE_1) AS ANZAHL, SPALTE_1 
FROM tbl_xy 
GROUP BY strpos("SPALTE_1", $array)
klappt natürlich nicht ... Kann man das überhaupt so machen? Sollte man einen anderen Weg beschreiten? Danke für die Hilfe.

So solls sein:
Code:
ANZAHL   SPALTE_1
------------------
4        test
1        had.gg
3        oo
 
Als erstes sollten wir mal definieren mit was für einer Datenbank du arbeiten willst. MySQL, Oracle, MS SQL?
 
Oh, dann ists einfach. Mache ein Subquery mit all deinen Gruppen und verbinde dieses.
Das Subquery ist ein UNION-SQL das eine imaginäre Tabelle ergibt.
SQL:
SELECT
	IFNULL(gruppe, spalte_1) AS gruppe1,
	COUNT(*) AS anzahl
FROM
	tbl_xy 
	LEFT JOIN (SELECT 'test' AS gruppe UNION SELECT 'oo') AS gruppen
		ON LOCATE(gruppe , spalte_1) > 0
GROUP BY
	gruppe1
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück