MySQL Frage zu einer Datenbankabfrage mit Group und Count

baserider

Well-known member
ID: 174417
L
10 März 2007
682
23
Hi,

über eine ganz normale Abfrage bekomme ich so ein Ergebnis:

beitrag 1 | kategorie 1
beitrag 1 | kategorie 2
beitrag 1 | kategorie 3

Wenn ich die Abfrage erweitere:

SELECT COUNT(beitrag) anzahl,beitrag,kategorie ... GROUP BY beitrag

3 | beitrag 1 | kategorie1

Ist es irgendwie schon per Mysql möglich das ich dann sowas hier erhalte:

3 | beitrag 1 | kategorie1,kategorie 2,kategorie 3

Ansonsten müsste ich ja die obere Ergebnissmenge nehmen und per PHP das gewünschte Resultat zusammenbauen oder eben 2 Abfragen. Was wäre denn dafür die beste Lösung?
 
:rtfm: :mrgreen:

Ne Scherz bei Seite, hab auch erst suchen müssen :)

Hier ist die Antwort:
PHP:
SELECT  COUNT(beitrag) as anzahl, 
        beitrag, 
        GROUP_CONCAT(kategorie) as alle_kategorien 
FROM table 
GROUP BY beitrag
 
hi,

naja eigentlich hätte ich das auch finden können, :) aber ich hab das wohl glatt übersehen. Die Dokumentation hatte ich mir ja heut auch angesehen. Werd ich morgen gleich mal probieren, aber das is ja genau das was ich brauche :)

thx
 
Bitte immer gerne!

Formatieren, kannst du es auch nachher.
Es kommt so raus:

PHP:
$kategorien = "kategorie A,kategorie B, kategorie C,...";

Formatieren kannst Du es zB mit preg_replace:

PHP:
$kategorien_f = preg_replace("[,]",", ",$kategorien);

Beste Grüße
 
PHP:
$kategorien_f = preg_replace("[,]",", ",$kategorien);

So etwas wie du nun angegeben hast ist mir schon öfters mal aufgefallen.
Warum wird preg_replace für so simple, "statische" Ersetzungen benutzt?
Gibt es da irgendwelche Vorteile oder liege ich im Recht, dass str_replace für so etwas eigentlich die bessere Wahl ist? (Aus Sicht der Performance und so..?!)

PHP:
$kategorien_f = str_replace(",", ", ", $kategorien);

preg_replace arbeitet ja mit regulären Ausdrücken und diese sollen ja öfters langsamer sein - oder ist das nur der Fall, sobald diese komplexer werden?

EDIT: Ah, auf PHP.net steht es auch:

https://de.php.net/str_replace schrieb:
Wenn Sie keine ausgefallenen Ersetzungsregeln (wie Reguläre Ausdrücke) benötigen, sollten Sie immer diese Funktion anstelle von ereg_replace() oder preg_replace() verwenden.
 
Wenn man immer preg_replace benutzt... :)
Außerdem kommt es auf die Datenmenge drauf an, ob Du die Microsekunde auch spürst. Und str_replace kannte ich noch nicht, danke für den Tipp :)

Grüße