Guten morgen,
ich habe ein kleines Problem mit einer SQL Abfrage und hoffe, dass ihr mir weiterhelfen könnt.
Meine SQLite DB besitzt zwei Tabellen. Die punkte_tb, die ca. 700 000 Punkte enthält und die segment_tb, die am Anfang noch leer ist.
Mein Ziel ist es, im ersten Durchgang einen Ausgangspunkt aus den punkte_tb zu wählen und ich einer 3x3 Matrix (beinhaltet umliegende Punkte) abzulegen. Das Ergebnis wird dann in die segment_tb abgelegt und aus der punkte_tb gelöscht.
In den darauffolgenden Durchgängen soll dann ein Punkte aus der segment_tb als Ausgangspunkt dienen. mit dem Ausgangspunkt soll dann geprüft werden, ob Punke aus der punkte_tb diesen umgeben, wenn ja, dann soll das Ergebnis wieder in die segment_tb geschrieben werden.
Der erste Durchlauf funktioniert. Aber im Zweiten kommt der SQL error: PRIMARY KEY must be unique.
Ich nehme an, weil die Werte aus p2 schon in der segment_tb existieren. Eigentlich soll er diese nicht mit in betracht ziehen. Könnt ihr mir sagen warum er es aber macht? Hier ist mein SQL Code:
ich habe ein kleines Problem mit einer SQL Abfrage und hoffe, dass ihr mir weiterhelfen könnt.
Meine SQLite DB besitzt zwei Tabellen. Die punkte_tb, die ca. 700 000 Punkte enthält und die segment_tb, die am Anfang noch leer ist.
Mein Ziel ist es, im ersten Durchgang einen Ausgangspunkt aus den punkte_tb zu wählen und ich einer 3x3 Matrix (beinhaltet umliegende Punkte) abzulegen. Das Ergebnis wird dann in die segment_tb abgelegt und aus der punkte_tb gelöscht.
In den darauffolgenden Durchgängen soll dann ein Punkte aus der segment_tb als Ausgangspunkt dienen. mit dem Ausgangspunkt soll dann geprüft werden, ob Punke aus der punkte_tb diesen umgeben, wenn ja, dann soll das Ergebnis wieder in die segment_tb geschrieben werden.
Der erste Durchlauf funktioniert. Aber im Zweiten kommt der SQL error: PRIMARY KEY must be unique.
Ich nehme an, weil die Werte aus p2 schon in der segment_tb existieren. Eigentlich soll er diese nicht mit in betracht ziehen. Könnt ihr mir sagen warum er es aber macht? Hier ist mein SQL Code:
SQL:
INSERT INTO segment_tb Select p2.* FROM segment_tb p1, punkte_tb p2
WHERE p2.id NOT IN (SELECT segment_tb.id FROM segment_tb)
AND ((ST_X(p1.geom)+ 0.5)>=ST_X(p2.geom))
AND ((ST_Y(p1.geom)+ 0.5)>=ST_Y(p2.geom))
AND((ST_X(p1.geom)- 0.5)<= ST_X(p2.geom))
AND ((ST_Y(p1.geom)- 0.5)<= ST_Y(p2.geom))
AND p1.hoehe - 1 <= p2.hoehe
AND p1.hoehe + 1 >=p2.hoehe
AND p2.zusatz == 0