2017-02-21 108 views
1

我有一个表点像下表:从分表用多边形

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

,内容如下

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 

我需要一个查询,如果可能的以下结果集提取

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

有人解决了类似的问题?

注意:点的顺序由列位置定义。

回答

2

我认为你在这里寻找的是GROUP_CONCAT,即像

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

更多关于GROUP_CONCAT看到docs

+0

GROUP_CONCAT授予点的顺序是由列位置定义的顺序? –

+0

@DavideLorenzoMARINO我修改了查询按位置排序。 – wogsland

+0

正确的答案,谢谢 –