|
View:
New views
15 Messages
—
Rating Filter:
Alert me
|
|
|
Alle Städte und/oder Landkreise in einem Bundesland?Hallo Liste,
ich stehe (nach meinem inzwischen gelösten Kartenproblem) mal wieder vor einer Problematik. Diesmal mit der opengeodb selbst. Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn überhaupt kann) eine Liste von allen Städten in einem Bundesland oder allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder fehlt da die Zuordnung? gruß Jan -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Hallo Jan,
> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn > überhaupt kann) eine Liste von allen Städten in einem Bundesland oder > allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder > fehlt da die Zuordnung? machbar ist das Ganze sicher, der Schlüssel dazu sind die Datensätze vom Typ 400100000 (= Teil von) in der Tabelle geodb_textdata. Diese ordnen der jeweiligen loc_id die übergeordnet Location zu. Hier müsstest Du dann die jeweiligen Ebenen durchlaufen. Alle Ortschaften zum Landkreis Pinneberg (loc_id 485) erhälst Du beispielsweise mit folgender Abfrage: SELECT gtv.loc_id, name.text_val AS name, typ.text_val AS typ FROM geodb_textdata gtv LEFT JOIN geodb_textdata name ON gtv.loc_id = name.loc_id LEFT JOIN geodb_textdata typ ON gtv.loc_id = typ.loc_id WHERE name.text_type = 500100000 /* Name */ AND typ.text_type = 400300000 /* Typ */ AND gtv.text_type = 400100000 /* Teil von */ AND gtv.text_val = '485' /* loc_id des Landkreis Pinneberg */; Analog dazu müsstest Du deine Abfragen gestalten. Möglicherweise kannst du auch http://fa-technik.adfc.de/code/opengeodb/dump/Dhier.sql für die gewünschte Hierarchie-Struktur verwenden, aber ich glaube es hat sich noch niemand die Mühe gemacht diese zu prüfen. BTW: Ich glaube nicht, dass die geoclass.php noch mit dem aktuellen Schema zusammenarbeitet... Gruß Stephan -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland????
400100000 steht in geodb_textdata? Wenn das Teil-Von-Beziehungen sind, sind das locid-Werte, damit gehören die doch wohl eindeutig in geodb_intdata, oder? Ist jetzt kein Einwand zu Stefan oder Jan-Simon, eher eine generelle Frage, ob hier nicht dann ein Fehler in der Verwendung der Struktur vorliegt. Gruß Peter Wendorff Stephan Schuster schrieb: > Hallo Jan, > > >> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn >> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder >> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder >> fehlt da die Zuordnung? >> > > machbar ist das Ganze sicher, der Schlüssel dazu sind die Datensätze vom > Typ 400100000 (= Teil von) in der Tabelle geodb_textdata. Diese ordnen > der jeweiligen loc_id die übergeordnet Location zu. Hier müsstest Du > dann die jeweiligen Ebenen durchlaufen. > > Alle Ortschaften zum Landkreis Pinneberg (loc_id 485) erhälst Du > beispielsweise mit folgender Abfrage: > > SELECT gtv.loc_id, name.text_val AS name, typ.text_val AS typ > FROM geodb_textdata gtv > LEFT JOIN geodb_textdata name ON gtv.loc_id = name.loc_id > LEFT JOIN geodb_textdata typ ON gtv.loc_id = typ.loc_id > WHERE name.text_type = 500100000 /* Name */ > AND typ.text_type = 400300000 /* Typ */ > AND gtv.text_type = 400100000 /* Teil von */ > AND gtv.text_val = '485' /* loc_id des Landkreis Pinneberg */; > > Analog dazu müsstest Du deine Abfragen gestalten. Möglicherweise kannst > du auch http://fa-technik.adfc.de/code/opengeodb/dump/Dhier.sql > für die gewünschte Hierarchie-Struktur verwenden, aber ich glaube es hat sich > noch niemand die Mühe gemacht diese zu prüfen. > > BTW: Ich glaube nicht, dass die geoclass.php noch mit dem aktuellen > Schema zusammenarbeitet... > > Gruß > Stephan > > -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Hallo Peter
> 400100000 steht in geodb_textdata? ja. > Wenn das Teil-Von-Beziehungen sind, sind das locid-Werte, damit gehören > die doch wohl eindeutig in geodb_intdata, oder? Die Frage ist berechtigt, da loc_id laut Strukturdump ein Integer ist, hast Du wohl recht. > Ist jetzt kein Einwand zu Stefan oder Jan-Simon, eher eine generelle > Frage, ob hier nicht dann ein Fehler in der Verwendung der Struktur > vorliegt. Falls niemand einen plausiblen Einwand hat, sollte dies eigentlich geändert werden. An dieser Stelle sollte man auch überlegen, ob dies nicht auch für type_id 400200000 (Ebene) gilt. Die Bedeutung von Ebene ist mir auch nicht ganz klar. Gruß Stephan -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?>> Ist jetzt kein Einwand zu Stefan oder Jan-Simon, eher eine generelle >> Frage, ob hier nicht dann ein Fehler in der Verwendung der Struktur >> vorliegt. >> > > Falls niemand einen plausiblen Einwand hat, sollte dies eigentlich > geändert werden. An dieser Stelle sollte man auch überlegen, ob dies > nicht auch für type_id 400200000 (Ebene) gilt. Die Bedeutung von Ebene > ist mir auch nicht ganz klar. > > Gruß > Stephan > > vollständig dokumentiert ist?!? gruß Jan -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Hallo Jan,
Jan-Simon Winkelmann wrote: > ich stehe (nach meinem inzwischen gelösten Kartenproblem) mal wieder vor > einer Problematik. Diesmal mit der opengeodb selbst. > Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn > überhaupt kann) eine Liste von allen Städten in einem Bundesland oder > allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder > fehlt da die Zuordnung? Ich habe mir vor einiger Zeit mal einige Abfragen in mühevoller Kleinarbeit zusammengebaut. Diese Abfragen beziehen sich auf Bayern, aber du kannst sie ja auf das jeweilige Bundesland anpassen. Beachte, dass diese Abfragen nur mit einer intakten geodb_hierarchies funktionieren. ------------------------------------------------------------------------ Regierungsbezirk: SELECT ort.loc_id as l_ort, ort.text_val as t_ort FROM geodb_hierarchies hi, geodb_textdata land, geodb_textdata ort, geodb_textdata bundesland WHERE hi.id_lvl2=land.loc_id AND land.text_val='DE' AND land.text_type=500100001 AND hi.id_lvl3=bundesland.loc_id AND bundesland.text_val='BY' AND bundesland.text_type=500100001 AND ort.loc_id = hi.loc_id AND ort.text_type = 500100000 AND hi.loc_id=hi.id_lvl4 ORDER BY l_ort ------------------------------------------------------------------------ Landkreis: SELECT ort.loc_id as l_ort, ort.text_val as t_ort, hi.id_lvl4 as rbez_id FROM geodb_hierarchies hi, geodb_textdata land, geodb_textdata ort, geodb_textdata bundesland WHERE hi.id_lvl2=land.loc_id AND land.text_val='DE' AND land.text_type=500100001 AND hi.id_lvl3=bundesland.loc_id AND bundesland.text_val='BY' AND bundesland.text_type=500100001 AND ort.loc_id = hi.loc_id AND ort.text_type = 500100000 AND hi.loc_id=hi.id_lvl5 ORDER BY l_ort ------------------------------------------------------------------------ Ort: SELECT ort.loc_id as l_ort, ort.text_val as t_ort, coord.lon as lon, coord.lat as lat, kfz.text_val as t_kfz, hi.id_lvl5 as lkr_id FROM geodb_hierarchies hi, geodb_textdata land, geodb_textdata ort, geodb_textdata bundesland, geodb_textdata kfz, geodb_coordinates coord, geodb_locations loc WHERE hi.id_lvl2=land.loc_id AND land.text_val='DE' AND land.text_type=500100001 AND hi.id_lvl3=bundesland.loc_id AND bundesland.text_val='BY' AND bundesland.text_type=500100001 AND ort.loc_id=hi.loc_id AND ort.text_type=500100000 AND hi.loc_id=hi.id_lvl6 AND loc.loc_id=hi.loc_id AND loc.loc_type=100700000 AND coord.loc_id=hi.loc_id AND kfz.loc_id=hi.loc_id AND kfz.text_type=500500000 ORDER BY l_ort ------------------------------------------------------------------------ PLZ: SELECT plz.loc_id as l_plz, plz.text_val as t_plz FROM geodb_hierarchies hi, geodb_textdata land, geodb_textdata bundesland, geodb_textdata plz WHERE hi.id_lvl2=land.loc_id AND land.text_val='DE' AND land.text_type=500100001 AND hi.id_lvl3=bundesland.loc_id AND bundesland.text_val='BY' AND bundesland.text_type=500100001 AND hi.loc_id=hi.id_lvl6 AND plz.loc_id=hi.loc_id AND plz.text_type=500300000 ORDER BY l_plz, t_plz ------------------------------------------------------------------------ cu, Robo :) -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Hallo Jan,
> Wobei sich für mich allgemein die Frage stellt wo das überhaupt wirklich > vollständig dokumentiert ist?!? Das größte Problem der OpenGeoDB sehe ich tatsächlich in der Dokumentation. Ein Ansatzpunkt ist die Doku auf Sourceforge. Unter http://sourceforge.net/docman/?group_id=132421 findest Du die ursprünliche Dokumentation nach der Umstellung der Datenbankstruktur von Thomas Mack, dem früheren Hauptentwickler des Projekts. Leider ist davon einiges bereits veraltet. Immer noch interessant (vor allem für Einsteiger) ist jedoch das Datenbank-Schema (Punkt 1) und die Anmerkungen dazu (Punkt 2). Die Angaben zur type_id stand früher in der Datei constants.txt, jetzt finden sie sich in der Tabelle geodb_type_names. Gruß Stephan -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Robert Böck schrieb:
> Hallo Jan, > > Jan-Simon Winkelmann wrote: > > >> ich stehe (nach meinem inzwischen gelösten Kartenproblem) mal wieder >> vor einer Problematik. Diesmal mit der opengeodb selbst. >> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn >> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder >> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder >> fehlt da die Zuordnung? >> > > Ich habe mir vor einiger Zeit mal einige Abfragen in mühevoller > Kleinarbeit zusammengebaut. Diese Abfragen beziehen sich auf Bayern, > aber du kannst sie ja auf das jeweilige Bundesland anpassen. Beachte, > dass diese Abfragen nur mit einer intakten geodb_hierarchies > funktionieren. > > ------------------------------------------------------------------------ > Regierungsbezirk: > > SELECT ort.loc_id as l_ort, > ort.text_val as t_ort > FROM geodb_hierarchies hi, > geodb_textdata land, > geodb_textdata ort, > geodb_textdata bundesland > WHERE hi.id_lvl2=land.loc_id AND > land.text_val='DE' AND > land.text_type=500100001 AND > hi.id_lvl3=bundesland.loc_id AND > bundesland.text_val='BY' AND > bundesland.text_type=500100001 AND > ort.loc_id = hi.loc_id AND > ort.text_type = 500100000 AND > hi.loc_id=hi.id_lvl4 > ORDER BY l_ort > ------------------------------------------------------------------------ > Landkreis: > > SELECT ort.loc_id as l_ort, > ort.text_val as t_ort, > hi.id_lvl4 as rbez_id > FROM geodb_hierarchies hi, > geodb_textdata land, > geodb_textdata ort, > geodb_textdata bundesland > WHERE hi.id_lvl2=land.loc_id AND > land.text_val='DE' AND > land.text_type=500100001 AND > hi.id_lvl3=bundesland.loc_id AND > bundesland.text_val='BY' AND > bundesland.text_type=500100001 AND > ort.loc_id = hi.loc_id AND > ort.text_type = 500100000 AND > hi.loc_id=hi.id_lvl5 > ORDER BY l_ort > ------------------------------------------------------------------------ > Ort: > > SELECT ort.loc_id as l_ort, > ort.text_val as t_ort, > coord.lon as lon, > coord.lat as lat, > kfz.text_val as t_kfz, > hi.id_lvl5 as lkr_id > FROM geodb_hierarchies hi, > geodb_textdata land, > geodb_textdata ort, > geodb_textdata bundesland, > geodb_textdata kfz, > geodb_coordinates coord, > geodb_locations loc > WHERE hi.id_lvl2=land.loc_id AND > land.text_val='DE' AND > land.text_type=500100001 AND > hi.id_lvl3=bundesland.loc_id AND > bundesland.text_val='BY' AND > bundesland.text_type=500100001 AND > ort.loc_id=hi.loc_id AND > ort.text_type=500100000 AND > hi.loc_id=hi.id_lvl6 AND > loc.loc_id=hi.loc_id AND > loc.loc_type=100700000 AND > coord.loc_id=hi.loc_id AND > kfz.loc_id=hi.loc_id AND > kfz.text_type=500500000 > ORDER BY l_ort > ------------------------------------------------------------------------ > PLZ: > > SELECT plz.loc_id as l_plz, > plz.text_val as t_plz > FROM geodb_hierarchies hi, > geodb_textdata land, > geodb_textdata bundesland, > geodb_textdata plz > WHERE hi.id_lvl2=land.loc_id AND > land.text_val='DE' AND > land.text_type=500100001 AND > hi.id_lvl3=bundesland.loc_id AND > bundesland.text_val='BY' AND > bundesland.text_type=500100001 AND > hi.loc_id=hi.id_lvl6 AND > plz.loc_id=hi.loc_id AND > plz.text_type=500300000 > ORDER BY l_plz, t_plz > ------------------------------------------------------------------------ > > cu, Robo :) > > leider ist bei mir die hierarchies-Tabelle leer ... gruß Jan -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Jan-Simon Winkelmann wrote:
>>> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn >>> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder >>> allen Landkreisen in einem Bundesland haben. >> >> Ich habe mir vor einiger Zeit mal einige Abfragen in mühevoller >> Kleinarbeit zusammengebaut. Diese Abfragen beziehen sich auf Bayern, >> aber du kannst sie ja auf das jeweilige Bundesland anpassen. Beachte, >> dass diese Abfragen nur mit einer intakten geodb_hierarchies >> funktionieren. > > leider ist bei mir die hierarchies-Tabelle leer ... Ich dachte, die gibt es bei Martin extra? Ich habe meine Abfragen mit den aktuellen Daten nicht getestet, aber mit der 0.2.4d funktionieren sie bestens. cu, Robo :) -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?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? gruß Jan Stephan Schuster schrieb: > Hallo Jan, > > >> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn >> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder >> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder >> fehlt da die Zuordnung? >> > > machbar ist das Ganze sicher, der Schlüssel dazu sind die Datensätze vom > Typ 400100000 (= Teil von) in der Tabelle geodb_textdata. Diese ordnen > der jeweiligen loc_id die übergeordnet Location zu. Hier müsstest Du > dann die jeweiligen Ebenen durchlaufen. > > Alle Ortschaften zum Landkreis Pinneberg (loc_id 485) erhälst Du > beispielsweise mit folgender Abfrage: > > SELECT gtv.loc_id, name.text_val AS name, typ.text_val AS typ > FROM geodb_textdata gtv > LEFT JOIN geodb_textdata name ON gtv.loc_id = name.loc_id > LEFT JOIN geodb_textdata typ ON gtv.loc_id = typ.loc_id > WHERE name.text_type = 500100000 /* Name */ > AND typ.text_type = 400300000 /* Typ */ > AND gtv.text_type = 400100000 /* Teil von */ > AND gtv.text_val = '485' /* loc_id des Landkreis Pinneberg */; > > Analog dazu müsstest Du deine Abfragen gestalten. Möglicherweise kannst > du auch http://fa-technik.adfc.de/code/opengeodb/dump/Dhier.sql > für die gewünschte Hierarchie-Struktur verwenden, aber ich glaube es > hat sich > noch niemand die Mühe gemacht diese zu prüfen. > > BTW: Ich glaube nicht, dass die geoclass.php noch mit dem aktuellen > Schema zusammenarbeitet... > > Gruß > Stephan > > -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Ohne genau zu wissen, worum es geht, würde ich
SELECT DISTINCT ... probieren - das filtert die doppelten aus. s.m. Jan-Simon Winkelmann schrieb: > 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? > > gruß > Jan > > Stephan Schuster schrieb: > >> Hallo Jan, >> >> >> >>> Und zwar möchte ich gerne (ohne die geoclassphp, sofern die das denn >>> überhaupt kann) eine Liste von allen Städten in einem Bundesland oder >>> allen Landkreisen in einem Bundesland haben. Geht das irgendwie oder >>> fehlt da die Zuordnung? >>> >>> >> machbar ist das Ganze sicher, der Schlüssel dazu sind die Datensätze vom >> Typ 400100000 (= Teil von) in der Tabelle geodb_textdata. Diese ordnen >> der jeweiligen loc_id die übergeordnet Location zu. Hier müsstest Du >> dann die jeweiligen Ebenen durchlaufen. >> >> Alle Ortschaften zum Landkreis Pinneberg (loc_id 485) erhälst Du >> beispielsweise mit folgender Abfrage: >> >> SELECT gtv.loc_id, name.text_val AS name, typ.text_val AS typ >> FROM geodb_textdata gtv >> LEFT JOIN geodb_textdata name ON gtv.loc_id = name.loc_id >> LEFT JOIN geodb_textdata typ ON gtv.loc_id = typ.loc_id >> WHERE name.text_type = 500100000 /* Name */ >> AND typ.text_type = 400300000 /* Typ */ >> AND gtv.text_type = 400100000 /* Teil von */ >> AND gtv.text_val = '485' /* loc_id des Landkreis Pinneberg */; >> >> Analog dazu müsstest Du deine Abfragen gestalten. Möglicherweise kannst >> du auch http://fa-technik.adfc.de/code/opengeodb/dump/Dhier.sql >> für die gewünschte Hierarchie-Struktur verwenden, aber ich glaube es >> hat sich >> noch niemand die Mühe gemacht diese zu prüfen. >> >> BTW: Ich glaube nicht, dass die geoclass.php noch mit dem aktuellen >> Schema zusammenarbeitet... >> >> Gruß >> Stephan >> >> >> > > > Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?> 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 -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Hallo Stephan,
ich glaube ich habe etwas geschlafen als ich gepostet hab. Ich meinte natürlich ich möchte alle Landkreise in einem angegebenen Bundesland ;) Entschuldige bitte die Verwirrung. gruß Jan Stephan S schrieb: >> 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 > > -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?Hallo Jan,
> ich glaube ich habe etwas geschlafen als ich gepostet hab. > Ich meinte natürlich ich möchte alle Landkreise in einem angegebenen > Bundesland ;) > Entschuldige bitte die Verwirrung. kein Problem. Dann fehlt Deiner Abfrage die Einschränkung für tp auf einen type (z.b. 500100000), dadurch liefert dir tp alle Einträge die mit den gejointen (heisst das so? ;-) loc_ids verknüpft sind. Die runden Klammern kannst Du bei dieser Abfrage weglassen. Also: SELECT tp.text_val AS text, n.text_val AS name, n.loc_id FROM geodb_locations AS l INNER JOIN geodb_textdata AS gtv 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 tp.text_type = 500100000 /* Typ für tp auf Name beschränken */ AND n.text_type=500100000 /* Typ für n auf Name beschränken */ AND gtv.text_type=400100000 /* Teil von */ AND gtv.text_val=108 /* Wert für Teil von (=LK Brandenburg) */ AND n.text_locale='de'; Mir ist allerdings nicht ganz klar, warum Du zweimal den Namen abfragen solltest? Ich konnte das auch nicht aus den Aliasen schliessen. Falls tp beispielsweise für "typ" stehen sollte, müsstest Du als Bedingung für tp statt der 500100000 die 400300000 verwenden: SELECT tp.text_val AS text, n.text_val AS name, n.loc_id FROM geodb_locations AS l INNER JOIN geodb_textdata AS gtv 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 tp.text_type = 400300000 /* Typ für tp auf Typ beschränken */ AND n.text_type=500100000 /* Typ für n auf Name beschränken */ AND gtv.text_type=400100000 /* Teil von */ AND gtv.text_val=108 /* Wert für Teil von (=LK Brandenburg) */ AND n.text_locale='de'; Damit hast Du dann die Information ob Landkreis oder kreisfreie Stadt. Gruß Stephan -- Stephan Schuster <stephan.s@...> -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: Alle Städte und/oder Landkreise in einem Bundesland?> Mir ist allerdings nicht ganz klar, warum Du zweimal den Namen abfragen > solltest? Ich konnte das auch nicht aus den Aliasen schliessen. Falls tp > beispielsweise für "typ" stehen sollte, müsstest Du als Bedingung für tp > statt der 500100000 die 400300000 verwenden: > > Ja genau da lag das Problem. Vielen Dank :) Dauert leider etwas bis man sich in die Struktur wirklich rein denkt. gruß Jan -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
| Free Forum Powered by Nabble | Forum Help |