Changeset 265 for trunk/import/pp_laden.sql
- Timestamp:
- 02/21/13 13:56:16 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/import/pp_laden.sql
r257 r265 11 11 -- 2012-04-24 Generell Filter 'endet IS NULL' um historische Objekte auszublenden 12 12 -- 2012-04-25 Abstürze und Fehler (durch kaputte Geometrie?) beim Zusammenfassen der Flächen 13 -- Mehr buffer, mehr st_simplify? 14 -- 2012-10-29 Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 13 -- 2012-10-29 F.J. Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 14 -- 2013-02-06 A.E. Function-Name an PostGIS 2 angepasst: multi() -> st_multi(), simplify() -> st_simplify() 15 -- 2013-02-21 F.J. doppelte Buchungen zum Flurstück aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 15 16 16 17 -- ============================ … … 52 53 -- auf eine bestimmte gml_id filtert. 53 54 -- Damit wäre die DB schon während der Konvertierung konsistenter. 55 -- Nachtrag 2013-02-20: 56 -- Diese provisorische Lösung korrigiert nur die Fälle, wo ein Replace eine redundante Beziehung 57 -- einträgt. Wenn ein Objekt und seine Beziehung gleichzeitig geändert wird, wird der alte 58 -- Eintrag nicht gefunden und verbleibt in den Beziehungen. 59 -- Siehe z.B. in Datei "sichten.sql" die Abfrage "mehrfache_buchung_zu_fs" 60 61 62 -- Mehrfache Buchungen zu einem Flurstück korrigieren. 63 -- Neu 2013-02-21 64 -- Dieser Fehler enststeht, wenn ein Replace zu "ax_flurstueck" gleichzeitig die 65 -- Beziehung 'istGebucht' zu "ax_buchungsStelle" ändert. 66 -- Kann entfallen, sobald PostNAS bei Replace die "alkis_beziehungen" richtig fortführt. 67 68 -- Version Marvin Brandt, Unna 69 -- DELETE 70 -- -- SELECT * 71 -- FROM alkis_beziehungen a1 72 -- WHERE a1.beziehung_von = ANY(SELECT gml_id FROM ( 73 -- SELECT f.*, 74 -- (SELECT count(f2.gml_id) as anzahl 75 -- FROM ax_flurstueck f2 76 -- JOIN alkis_beziehungen a1 ON f2.gml_id = a1.beziehung_von AND a1.beziehungsart = 'istGebucht' 77 -- WHERE f2.gml_id = f.gml_id 78 -- ) as anzahl 79 -- FROM ax_flurstueck f 80 -- ) as sub 81 -- WHERE sub.anzahl > 1 ) 82 -- AND a1.beziehungsart = 'istGebucht' 83 -- AND a1.ogc_fid = (SELECT min(sub.ogc_fid) as ogc_fid FROM ( 84 -- SELECT a1.*, 85 -- (SELECT count(f2.gml_id) as anzahl 86 -- FROM ax_flurstueck f2 87 -- JOIN alkis_beziehungen a1 ON f2.gml_id = a1.beziehung_von AND a1.beziehungsart = 'istGebucht' 88 -- WHERE f2.gml_id = f.gml_id 89 -- ) as anzahl 90 -- FROM ax_flurstueck f 91 -- JOIN alkis_beziehungen a1 92 -- ON f.gml_id = a1.beziehung_von AND a1.beziehungsart = 'istGebucht' 93 -- ) as sub 94 -- WHERE sub.beziehung_von = a1.beziehung_von); 95 96 97 -- Version Frank Jäger, Lemgo 98 DELETE 99 -- SELECT * -- TEST: erst mal schauen, was gelöscht würde, wenn ... 100 FROM alkis_beziehungen b 101 WHERE b.beziehungsart = 'istGebucht' 102 -- Die erste subquery zählt die Buchungen zu einer (Flurstücks-) gml_id. 103 -- Es wird nur dort gelöscht, wo mehrerer Buchungen existieren. 104 AND 1 < 105 ( SELECT count(f1.ogc_fid) AS anzfs 106 FROM ax_flurstueck f1 107 JOIN alkis_beziehungen z 108 ON f1.gml_id = z.beziehung_von 109 WHERE f1.gml_id = b.beziehung_von 110 AND z.beziehungsart = 'istGebucht' 111 GROUP BY f1.gml_id ) 112 -- Die zweite Subquery liefert die letzte (= aktuelle) Beziehung. 113 -- Diese aktuelle Buchung wird vom Löschen ausgeschlossen. 114 AND b.ogc_fid < 115 ( SELECT max(a.ogc_fid) AS maxi 116 FROM ax_flurstueck f2 117 JOIN alkis_beziehungen a 118 ON f2.gml_id = a.beziehung_von 119 WHERE f2.gml_id = b.beziehung_von 120 AND a.beziehungsart = 'istGebucht' 121 GROUP BY a.beziehung_von ) 122 -- bei Test mit SELECT darf man sortieren: 123 -- ORDER BY b.beziehung_von, b.ogc_fid 124 ; 125 54 126 55 127
Note: See TracChangeset
for help on using the changeset viewer.