2017-02-21 3 views
1

ich eine Tabelle PUNKTE wie die folgende haben:Aus Tabelle mit Punkten Tabelle mit Polygonen

POINTS 
-------------------- 
ID_POINT  INT PK 
COORD  POINT 
POSITION  INT 
ID_POLYGON INT 

mit folgendem Inhalt

ID_POINT COORD   POSITION  ID_POLYGON 
--------------------------------------------------- 
1   POINT(1, 1)  1   1 
2   POINT(2, 1)  2   1 
3   POINT(2, 2)  3   1 
4   POINT(0, 0)  1   2 
5   POINT(1, 0)  2   2 
6   POINT(1, 1)  3   2 
7   POINT(0, 1)  4   2 

ich mit einer Abfrage, wenn möglich, die folgenden Suchresultates extrahieren müssen

ID_POLYGON   BORDERS 
---------------------------------------------------- 
1     POLYGON((1 1, 2 1, 2 2)) 
2     POLYGON((0 0, 1 0, 1 1, 0 1)) 

Jemand hat ein ähnliches Problem gelöst?

Hinweis: Die Reihenfolge der Punkte wird durch die Spaltenposition festgelegt.

Antwort

2

denke ich, was Sie hier suchen ist GROUP_CONCAT, das heißt so etwas wie

SELECT ID_POLYGON, GROUP_CONCAT(COORD ORDER BY POSITION ASC) 
FROM POINTS 
GROUP BY ID_POLYGON 

Für mehr auf GROUP_CONCAT die docs sehen.

+0

GROUP_CONCAT gewährt, dass die Reihenfolge der Punkte die Reihenfolge ist, die durch die Spaltenposition definiert ist? –

+0

@DavideLorenzoMARINO Ich habe die Abfrage geändert, um nach Position zu sortieren. – wogsland

+0

Richtige Antwort, danke –

Verwandte Themen