[mySQL] COUNT Abfrage über mehrere Spalten

syntec

Lt. Commander
Registriert
Mai 2005
Beiträge
1.057
Guten morgen zusammen,

hoffe, ihr könnt mir bei folgendem Problemchen helfen. Ich habe eine Tabelle in der in drei Spalten jeweils ein Text stehen kann (wunsch1,wunsch2,wunsch3).

Um nun zu ermitteln welche Wünsche am häufigsten vorkommen bräuchte ich die Ergebnisse eines Count über diese drei Spalten - momentan bekomme ich aber nur eine hin. Kennt jemand die genaue Syntax?

PHP:
SELECT COUNT( wunsch1) AS topwunsch, wunsch1 FROM `wunschliste`
GROUP BY (wunsch1)
ORDER BY topwunsch DESC  LIMIT 0, 30
 
Das geht glaube nicht, höchstens mit 3 einzelnen Abfragen.
Besser Du hättest die Tabelle anders stukturiert, also alle Wünsche in einer einzelnen Spalte und dann gruppieren und count, dann würdest Du 3 Zeilen zurückbekommen mit den einzelnen counts
 
Die Tabelle exisitiert schon und es stehen Daten - daran kann ich leider nichts mehr ändern. Ich habe natürlich die Möglichkeit 3 Anfragen zu machen und das Ergebnis wiederrum in eine neue Tabelle zu schreiben. Quasi: Aus 3 mach 1.

Wollte halt nur wissen ob es eine elegantere Lösung gibt..
 
Nee leider nicht, diesbezüglich ist da jede andere Lösung umständlich. ;)
Kannste das denn nicht umändern? Oder wäre das zu aufwendig?
 
Sagen wir mal so - ich soll die Daten aus einer Tabelle auswerten die live schon auf einem Server genutzt wird. Viel Änderungspotential ist da wohl nicht mehr gegeben. *plonk*

Mach ich halt meine etwas kompliziertere Auswertung.
 
Hmm ja ok. Allerdings ist diese Tabelle dort dann auch nicht optimal. Ähnliche Sachen sollte man in SQL immer zeilenweise eintragen, nicht spaltenweise, ggf. über eine 2. Brückentabelle oder eben ne Statustabelle o.ä.

Egal. Also entweder 3 Abfragen oder ne php-Schleife über alles mit Zähler. ;)
 
Moin,
also das deine Tabelle nicht normalisiert vorliegt wurde ja schon erwähnt, also werde ich mal nicht weiter dazu äußern, falls du dennoch darauf bestehst du Daten so zu lassen, dann versuch es mal mit der folgenden Abfrage (ich nehme jetzt einfach mal an du benutzt eine MySQL-Version die Subselects unterstützt):

Code:
SELECT 	w.wunsch, COUNT(*)
FROM	(
	SELECT	wunsch1 AS wunsch FROM wunschliste 
UNION ALL  
	SELECT	wunsch2 AS wunsch FROM wunschliste
UNION ALL  
	SELECT	wunsch3 AS wunsch FROM wunschliste
) AS w
GROUP BY wunsch

ORDER BY wunsch
 
Ich würde sagen: Besten Dank!

Die Auswertung schein auf dem Server nicht zu funktionieren (mysql4.x), aber aber auf meinem lokalen LAMP funktioniert diese Lösung wunderbar... :D
 
Zurück
Oben