[opengeodb] Alle Städte und/oder Landkreise in einem Bundesland?
Stephan S
stephan.s at gmx.net
Mit Mar 26 21:04:18 CET 2008
> Hallo,
>
> ich hab jetzt mal folgendes gebaut:
>
> SELECT
> tp.text_val AS t,
> n.text_val AS n, n.loc_id
> FROM geodb_textdata AS gtv
> INNER JOIN geodb_locations AS l ON gtv.loc_id=l.loc_id
> INNER JOIN geodb_textdata AS tp ON l.loc_id=tp.loc_id
> INNER JOIN geodb_textdata AS n ON l.loc_id=n.loc_id
> WHERE
> (l.loc_type=100500000)
> AND (n.text_type=500100000)
> AND (gtv.text_type=400100000)
> AND (gtv.text_val=108)
> AND (n.text_locale='de')
>
>
> sollte mir eigentlich alle Bundesländer in Deutschland ausgeben.
> Merkwürdigerweise bekomme ich aber viele Sachen doppelt, finde aber den
> Fehler nicht.
> Jemand eine Ahnung?
Du suchst hier alles was Teil von (gtv.text_type=400100000) der loc_id
108 ist (100500000 ist übrigens Landkreis, nicht Bundesland). 108 ist
die loc_id vom Bundesland Brandenburg. Um alle Bundesländer zu erhalten
fragst Du die geodb_locations nach Einträgen mit loc_type 100300000:
SELECT *
FROM geodb_locations
WHERE loc_type = 100300000
Das liefert 16 Einträge. Willst Du die Namen und die loc_id dazu:
SELECT locations.loc_id, name.text_val
FROM geodb_locations locations
LEFT JOIN geodb_textdata name ON name.loc_id = locations.loc_id
WHERE loc_type = 100300000 /* Typ für Bundesland */
AND name.text_type = 500100000 /* Typ für Name */
Falls Du mehrer Staaten importiert hast: Die Einschränkung auf "Teil von"
müsste in diesem Fall dann für den Staat Deutschland gesetzt werden (loc_id
105).
Eine Anmerkung noch: für die Analyse deiner SQL-Statements ist es für
andere hilfreich, wenn die Aliase sprechend sind. Du weisst sicherlich
was Du dir bei tp gedacht hast, ich leider nicht und so muss ich erst
versuchen aus den Bedingungen zu erschließen, was Du möchtest.
Schönen Gruß
Stephan