Keine doppelten Einträge ausgeben

Hallo,

ich habe eine DB, die so aussieht:
id - stadt1 - stadt2 - stadt3
1 - Ulm - Wieda - Bern
2 - Hamm- Ulm - Basel
usw.

Das heißt in 3 Spalten habe ich verschiedenste Städte eingetragen.
Wie kann ich nun die drei Spalten so auslesen, dass keine doppelten Städte angezeigt werden. Wenn es nur eine Spalte wäre, könnte ich ja distinct nehmen, bei drei geht das nicht, oder?
Im obigen Beispiel soll als Ergebnis:
Ulm, Wieda, Bern, Hamm, Basel herauskommen (also das doppelte Ulm nicht!)

Hat jemand eine Idee?
Falls es nicht direkt mit SQL geht, vielleicht in Verbindung mit php?

Hab es über PHP gelöst - falls es jemanden interessiert:

$sql = "SELECT `web_stadt`, `web_stadt2`, `web_stadt3`, `web_stadt4` FROM `personen` WHERE status=0;";
$result = mysql_query($sql) OR die(mysql_error());
$städte=array();
while($row = mysql_fetch_array($result)) {
    $städte[] = $row['web_stadt'];
    $städte[] = $row['web_stadt2'];
    $städte[] = $row['web_stadt3'];	
    $städte[] = $row['web_stadt4'];
	}
$städte = array_filter(array_unique($städte));
sort($städte);
print_r($städte);
select distinct(s) from (
      select web_stadt as s from personen
   union
      select web_stadt1 as s from personen
   union
      select web_stadt2 as s from personen
) as t

aber vermutlich musst du dein schema korrigieren - die spalten web_stadt über eine relationstabelle rausziehen.

Ich habe eine Tabelle STADTTEST mit dem Folgenden Inhalt und Abfrage aufgebaut:
/*
1 ULM WIEDA BERN
2 HAMM ULM BASEL
3 MÜNCHEN BASEL ULM
*/
SELECT stadt1 FROM stadttest
UNION
SELECT stadt2 FROM stadttest
UNION
SELECT stadt3 FROM stadttest;

Das ist das Ergebnis:
BASEL
BERN
HAMM
MÜNCHEN
ULM
WIEDA
Viele Grüße
Siegi_2