MySQL: Nach count(*) sortieren
Kalle_
- datenbank
0 wahsaga0 Kalle_0 Daniela Koller0 Kalle_
Hallöle,
für Besucher einer Messe sind Termine bei den Ausstellern zu machen. Jeder Terminwunsch erzeugt einen Datensatz, ein gebuchter Termin wird eingetragen und ersetzt die 0:
id aussteller_id besucher_id termin
-- ------------- ----------- ------
01 4711 0815 0
02 4711 0816 0
03 4711 0817 0
04 4712 0815 0
05 4712 0920 0
Problem:
Für Aussteller mit wenig Besucherwünschen soll zuerst ein Termin gemacht werden. Ich muss also wohl mit count(*) und GROUP BY arbeiten.
GROUP BY count(*)
ist jedoch NICHT zulässig.
Wie kann ich die Sätze zu einem Aussteller zählen und dann den kleinsten Zähler zuerst bekommen?
LG Kalle
hi,
Für Aussteller mit wenig Besucherwünschen soll zuerst ein Termin gemacht werden. Ich muss also wohl mit count(*) und GROUP BY arbeiten.
GROUP BY count(*)
ist jedoch NICHT zulässig.
Ist ja auch Unfug - was sollte denn dabei bitte herauskommen?
Das könnte doch gar nichts sinnvolles sein.
Wie kann ich die Sätze zu einem Aussteller zählen und dann den kleinsten Zähler zuerst bekommen?
Wenn du die Datensätze je Aussteller zählen willst - dann solltest du doch wohl nach Aussteller gruppieren, oder nicht?
gruß,
wahsaga
hi,
Wenn du die Datensätze je Aussteller zählen willst - dann solltest du doch wohl nach Aussteller gruppieren, oder nicht?
Mhhh, hatte gedacht, mit meiner Kurzform kommt das Problem rüber. Also genauer:
select aussteller_id, count(*)
from kontakte
group by aussteller_id
So, nun habe ich die Anzahl der Wunschkontakte, aber durcheinander. Also nicht etwa den kleinsten count(*) zuerst.
Wie bekomme ich den zuerst?
Eine ergänzende Zeile ORDER BY count(*) ist NICHT die Lösung.
Nach dem group by gibt es ja noch den HAVING, aber der sortiert wohl auch nicht?
Problem jetzt rübergekommen?
LG Kalle
Hi Kalle_
Eine ergänzende Zeile ORDER BY count(*) ist NICHT die Lösung.
Doch, ist es. Je nach DBMS musst du der count(*)-Spalte einen Namen geben und dann den zum sortieren benutzen oder aber du darfst ihr keinen Namen geben und musst count(*) im ORDER BY benutzen.
HAVING macht etwas ganz anderes, es arbeitet wie WHERE, wird jedoch erst nach der Gruppierung angewendet, sprich, du kannst Bedingungen auf Spalten anwenden, die erst zu diesem Zeitpunkt bekannt sind.
Gruss Daniela
Hallo, Daniela
Doch, ist es. Je nach DBMS musst du der count(*)-Spalte einen Namen geben ...
Klasse, mit Namen geht es. Hatte das bei der Vielzahl meiner Versuche nicht versucht.
Danke.
LG Kalle_