Datensätze zählen und sortieren

Andreas B.

Benutzer
Beiträge
14
Hallo Mysql-Experten,
als blutiger Anfänger verzweifle ich an einer praktisch ganz einfachen Sache.

Ich habe eine Tabelle mit diversen Daten sowie Orten und Ländern, die so aussieht:

... Hamburg Deutschland
... Hamburg Deutschland
... Hamburg Deutschland
... München Deutschland

... New York USA
... New York USA
... New York USA

... Moskau Russland
... Moskau Russland

Nun möchte ich gern diejenigen Länder ausgeben, in denen mindestens 3 Städte enthalten sind, Endergebnis also so:
- Deutschland
- USA

Ich probiere schon stundenlang mit Group by, Distinct etc. herum, aber komme auf keinen grünen Zweig.
Für Experten ist das wohl eine ganz einfache Sache. Wer kann mir helfen?

Vielen Dank im voraus!!!
Andreas
 
Werbung:
Nun möchte ich gern diejenigen Länder ausgeben, in denen mindestens 3 Städte enthalten sind, Endergebnis also so:

kein Ahnung, ob MySQL das kann...

Code:
test=*# select * from andi_b ;
  stadt  |  land
----------+-------------
 hamburg  | deutschland
 hamburg  | deutschland
 berlin  | deutschland
 dresden  | deutschland
 new york | usa
 boston  | usa
 boston  | usa
(7 rows)

Time: 0,352 ms
test=*# select land, count(distinct stadt) from andi_b group by land having count(distinct stadt) > 2;
  land  | count
-------------+-------
 deutschland |  3
(1 row)
 
kein Ahnung, ob MySQL das kann...

Code:
test=*# select * from andi_b ;
  stadt  |  land
----------+-------------
hamburg  | deutschland
hamburg  | deutschland
berlin  | deutschland
dresden  | deutschland
new york | usa
boston  | usa
boston  | usa
(7 rows)

Time: 0,352 ms
test=*# select land, count(distinct stadt) from andi_b group by land having count(distinct stadt) > 2;
  land  | count
-------------+-------
deutschland |  3
(1 row)
Wahnsinn, klappt auf Anhieb. Tausend Dank!!!!!!!!!!!!!!!! :)
 
Hallo Andreas,
leider habe ich mich zu früh gefreut, es klappt doch nicht so wie ich dachte. Ich habe mich aber wahrscheinlich auch nicht ganz klar ausgedrückt.
Es werden jetzt alle Länder ausgeschmissen, die mehr als 3 unterschiedliche Städte beinhalten. Bei Belgien z.B. habe ich 10 VERSCHIEDENE Städte, und Belgien wird angezeigt. Ich möchte aber, dass das Land nur angezeigt wird, wenn von der GLEICHEN Stadt mehr als 3 Einträge existieren. Ich hatte DISTINCT auch mal weggenommen, aber gleiches Ergebnis.
Könntest du mir noch mal helfen?

Vielen Dank im voraus!!!
 
Code:
select distinct land from (select land, stadt, count(stadt) from andi_b group by land, stadt having count(stadt) > 2)
Wäre wohl der einfachste weg.... ^^
 
Bei deinem vorletzten Code ohne Fehlermeldung sah es so aus:
Argentinien
Australien
Australien
Deutschland
Deutschland
Deutschland
Deutschland
Deutschland
Deutschland
Deutschland
Deutschland
Deutschland
Deutschland
Deutschland
Frankreich
Frankreich
Großbritannien
Großbritannien
Großbritannien
Großbritannien
Irland
Italien
Kanada
Österreich
Schweden
Spanien
Ungarn
USA
USA
USA
USA
USA
USA
USA
USA

Edit:
Und es soll so aussehen:
Argentinien
Australien
Deutschland
Frankreich
Großbritannien
Irland
Italien
Kanada
Österreich
Schweden
Spanien
Ungarn
USA

 
Werbung:
Zurück
Oben