Erstmal Hallo an alle
Ich habe ein Problem bei dem ich leider nicht weiter komme.
Ich habe eine Tabelle mit mehreren Einträgen, die Tabelle ist (vereinfacht) so aufgebaut:
id | bezugsort | austellungsort | [irrelevante Felder]
Jede id hat dabei einen bezugsort und einen austellungsort (sind fk's). Ich möchte nun gerne zu einer Liste an austellungsorten jeweils wissen, zu welchem bezugsort es die meisten einträge gibt. Als kleines Beispiel:
select count(*), bezugsort from table where ausstellungsort = 001 group by bezugsort;
Danach bekomme ich eine Liste die so aussieht:
count(*) | bezugsort
1 | 010
5 | 011
24 | 038
Jetzt möchte ich aber nur den Eintrag mit der maximalen Anzahl haben, da ich aber, egal wie, kein Statement mit max hinbekomme, welches auch funktioniert, hab ich mir dazu das hier gebaut:
select count(*), bezugsort from table where ausstellungsort = 001 and (select bezugsort from (select bezugsort, count(*) as cnt from table where ausstellungsort = 001 group by bezugsort order by cnt desc) where rownum <= 1) group by bezugsort;
Das ganze funktioniert soweit für einen einzigen austellungsort auch ganz gut, allerdings brauche ich das zu einer Liste an austellungsorten und da wirds dann leider haarig und da hänge ich momentan fest.
Über eine Antwort würde ich mich freuen.
Mit freundlichen Grüßen
Gossi91
Ich habe ein Problem bei dem ich leider nicht weiter komme.
Ich habe eine Tabelle mit mehreren Einträgen, die Tabelle ist (vereinfacht) so aufgebaut:
id | bezugsort | austellungsort | [irrelevante Felder]
Jede id hat dabei einen bezugsort und einen austellungsort (sind fk's). Ich möchte nun gerne zu einer Liste an austellungsorten jeweils wissen, zu welchem bezugsort es die meisten einträge gibt. Als kleines Beispiel:
select count(*), bezugsort from table where ausstellungsort = 001 group by bezugsort;
Danach bekomme ich eine Liste die so aussieht:
count(*) | bezugsort
1 | 010
5 | 011
24 | 038
Jetzt möchte ich aber nur den Eintrag mit der maximalen Anzahl haben, da ich aber, egal wie, kein Statement mit max hinbekomme, welches auch funktioniert, hab ich mir dazu das hier gebaut:
select count(*), bezugsort from table where ausstellungsort = 001 and (select bezugsort from (select bezugsort, count(*) as cnt from table where ausstellungsort = 001 group by bezugsort order by cnt desc) where rownum <= 1) group by bezugsort;
Das ganze funktioniert soweit für einen einzigen austellungsort auch ganz gut, allerdings brauche ich das zu einer Liste an austellungsorten und da wirds dann leider haarig und da hänge ich momentan fest.
Über eine Antwort würde ich mich freuen.
Mit freundlichen Grüßen
Gossi91