Aus einer Spalte der Zeile verschiedene Werte zusammenfassen!

||HOOG||

Aktiver Benutzer
Beiträge
25
Hi Leute,
wir haben hier eine Kfz Website ind möchten quasi die verschiedenen Daten einer spalte zusammenfassen.
Zum Beispiel : Mercdes-Benz 12, Smart 8 und so weiter ...Könnt ihr mir da mal weiterhelfen??

Vielen Dank schonmal im vorraus!
 
Werbung:
Was meinst Du genau mit "zusammenfassen"?

Z.B. wowas wie einen Überblick wie oft jeder Name vorkommt? Das geht mit einem GROUP BY:
Code:
SELECT autoname, count(*)
FROM tabellenname
GROUP BY autoname
 
Ich habe eine Fahrzeug DB mit sehr vielen Spalten (Eigenschaften des Fahrzeugs). Ich möchte nun Groupiert wissen, die Anzahl der verschiedenen Eigenschaften. Also wie viel der Marke OPEL, wie viel haben Xenon usw. Schon sowas wie Group by nur über alle Spalten.

||HOOG||
 
Schon sowas wie Group by nur über alle Spalten.

Das kommt drauf an. Wenn du wissen willst wie viele Xenon es von Opel gibt geht das mit weiteren Gruppierungen. Ansonsten hast du es mit völlig unterschiedlichen Mengen zu tun die du entweder einzeln abfragen oder einzeln per Subquery und Verkettung in einen Datensatz quetschen musst.

Die Kosten für eine riesige Gesamtabfrage dürften vergleichsweise enorm sein.
 
Das geht schon alles mit GROUP BY muss aber für jede Spalte entsprechend gemacht werden. Je nachdem welche Spalte wieviele Werte enthalten kann könnte man auch zusätzlich mit CASE im Select arbeiten. Z.B.:
Code:
SELECT    marke,
        count(*) AS anzahl,
        sum((    CASE
                WHEN    scheinwerfer = xeon
                THEN    1
                ELSE    0
                END )) AS xeon
FROM    autos
GROUP BY marke
 
subquer
Das geht schon alles mit GROUP BY muss aber für jede Spalte entsprechend gemacht werden. Je nachdem welche Spalte wieviele Werte enthalten kann könnte man auch zusätzlich mit CASE im Select arbeiten. Z.B.:
Code:
SELECT    marke,
        count(*) AS anzahl,
        sum((    CASE
                WHEN    scheinwerfer = xeon
                THEN    1
                ELSE    0
                END )) AS xeon
FROM    autos
GROUP BY marke
Ja,super !Es klappt!!
Ist es auch möglich wenn der Wert nicht auf xenon festgelegt ist ,sondern wenn der Wert dynamisch ist? z.B:alle Scheinwerfertypen
und kann ich dies in ein subquery schreiben ohne das ich jeden Wert in Case eintragen muss?
 
Naja sobald du mehr verschiedene Werte in der Spalte haben willst wird es kompliziert. Entweder du bekommst mehrere Zeilen pro Automarke, das wäre dann ganz normal GROUP BY
Code:
SELECT    marke,
        scheinwerfer,
        count(*) AS anzahl
FROM    autos
GROUP BY marke,scheinwerfer
oder du nutzt soetwas wie GROUP_CONCAT() aber damit habe ich keine Erfahrung unter MySQL. Damit könntest du etwas erzeugen wie
Marke | Beleuchtung | Spalte3
Opel | Xeon (5), Glühlampe (3) | Wert3
Das ist natürlich auch nur mit einer geringen Anzahl von möglichen Werten sinnvoll.
http://www.mysqlperformanceblog.com/2013/10/22/the-power-of-mysqls-group_concat/
 
Werbung:
Das klingt nach FAIL. Das klingt, als wenn bei jeder neu auftauchenden Eigenschaft ein neues Feld dazukommt. Zum Beispiel, morgen verkaufst nebenbau auch noch Kondome und Du hattes bisher nicht die Eigenschaft 'Geschmack' -> schwupps, neue Spalte.

Ist das so?

Hi,
sorry das ich jetzt erst antworte..
Nein das war alles festgelegt.Es ging darum,dass ich wissen wollte wieviel verschiedene Sorten Geschmack es gibt. Zum Bleistift:Erdbeer (25stk) oder honnelulukokus(41stk)usw.

Aber trotzdem danke
 
Zurück
Oben