[opengeodb] SQL-Script für hierarchies
Stephan Schuster
stephan.s at gmx.net
Die Apr 8 21:06:41 CEST 2008
Hallo Peter,
> > [...]
> >
> Hab das nochmal neu gebastelt, und komme auf die folgende Funktion, die
> mir immerhin einen Datensatz (loc_id 80627) korrekt setzt (und keinen
> falsch - auch ein Vorteil):
>
> UPDATE geodb_hierarchies,
> geodb_textdata AS partOf,
> geodb_textdata AS isLevel
> SET id_lvl8 = isLevel.loc_id
> WHERE 1
> AND partOf.loc_id = geodb_hierarchies.loc_id
> AND geodb_hierarchies.level = 9
> AND partOf.text_type = "400100000"
> AND isLevel.loc_id = partOf.text_val
> AND isLevel.text_type = "400200000"
> AND isLevel.text_val = "8";
Ich habe zwölf Datensatze mit einem Level von 9. Wenn ich die
übergeordneten loc_id's abfrage:
SELECT id_lvl9, text_val
FROM geodb_hierarchies h
LEFT JOIN geodb_textdata AS part_of ON h.loc_id = part_of.loc_id
WHERE `id_lvl9` > 0
AND part_of.text_type = 400100000
erhalte ich 11 Datensätze mit übergeordneter id 80592 und einen mit
81036. Letzterer ist der Ortsteil Maichingen, die anderen haben als
übergeordneten Datensatz die loc_id 80592. Diese ist in meinem Dump (ca.
2 Wochen alt) nicht vorhanden, was bei Deiner Abfrage logischerweise
dann dazu führt, dass diese nur einen Datensatz (loc_id aktualisiert
80627) aktualisiert.
Unter http://fa-technik.adfc.de/code/opengeodb.pl?locid=80592;c=DE
erhalte ich als Ergebnis Mönchsdeggingen. Da level 9 wohl noch sehr
experimentell (Straßen?) ist, wäre es vielleicht sinnvoller bei level 8
zu beginnen (?).
Schönen Gruß
Stephan