2015-04-12 40 views
0

我阅读了很多关于此主题的主题,但我无法弄清楚我的项目。我有两张桌子,网格和点。对于1个网格可能有多个点,但是,我只希望点表中的一个结果(多个点中的哪一个无关紧要),或者当网格中没有点的条目时,我只需要一个结果。使用左连接时限制右表的结果

与查询: SELECT g.id, g.latStart, g.latEnd, g.lngStart, g.lngEnd, p.teamId FROM grids g LEFT JOIN points p ON p.gridId = g.id

我将获得全部并网发电项目,加分的名单。但结果并不是我想要的。

我还未找到影象。下面是结果的JSON,因为我不能把图片:

{ 
 
\t "data": 
 
\t [ 
 
\t \t { 
 
\t \t \t "id": 1, 
 
\t \t \t "latStart": "51.878347", 
 
\t \t \t "latEnd": "4.388849", 
 
\t \t \t "lngStart": "51.884847", 
 
\t \t \t "lngEnd": "4.399849", 
 
\t \t \t "teamId": 2 
 
\t \t }, 
 
\t \t { 
 
\t \t \t "id": 1, 
 
\t \t \t "latStart": "51.878347", 
 
\t \t \t "latEnd": "4.388849", 
 
\t \t \t "lngStart": "51.884847", 
 
\t \t \t "lngEnd": "4.399849", 
 
\t \t \t "teamId": 2 
 
\t \t }, 
 
\t \t { 
 
\t \t \t "id": 1, 
 
\t \t \t "latStart": "51.878347", 
 
\t \t \t "latEnd": "4.388849", 
 
\t \t \t "lngStart": "51.884847", 
 
\t \t \t "lngEnd": "4.399849", 
 
\t \t \t "teamId": 2 
 
\t \t }, 
 
\t \t { 
 
\t \t \t "id": 2, 
 
\t \t \t "latStart": "51.878347", 
 
\t \t \t "latEnd": "4.399849", 
 
\t \t \t "lngStart": "51.884847", 
 
\t \t \t "lngEnd": "4.410849", 
 
\t \t \t "teamId": null 
 
\t \t }, 
 
\t \t { 
 
\t \t \t "id": 3, 
 
\t \t \t "latStart": "51.878347", 
 
\t \t \t "latEnd": "4.410849", 
 
\t \t \t "lngStart": "51.884847", 
 
\t \t \t "lngEnd": "4.421849", 
 
\t \t \t "teamId": null 
 
\t \t }, 
 
\t \t { 
 
\t \t \t "id": 4, 
 
\t \t \t "latStart": "51.878347", 
 
\t \t \t "latEnd": "4.421849", 
 
\t \t \t "lngStart": "51.884847", 
 
\t \t \t "lngEnd": "4.432849", 
 
\t \t \t "teamId": null 
 
\t \t } 
 
\t ] 
 
}

我收到三次ID为1的系统,因为有三点。我怎样才能将收到的积分限制为一个?我尝试了子查询,但我无法让他们工作。

在此先感谢您的帮助!

回答

0

我只希望点表的一个结果(多个点中的哪一个并不重要),或者当网格中没有点的条目时,它只能为NULL。

,如果是这样的话,那么你可以通过组,并采取最小或最大point.teamId

SELECT 
    g.id 
    , g.latStart 
    , g.latEnd 
    , g.lngStart 
    , g.lngEnd 
    , MAX(p.teamId) teamId 
FROM grids g 
    LEFT JOIN points p ON p.gridId = g.id 
GROUP BY 
    g.id 
    , g.latStart 
    , g.latEnd 
    , g.lngStart 
+0

这是真棒..和简单!谢啦!你能解释为什么GROUP BY如此重要吗?我已经尝试了没有GROUP BY的查询,但是只有有点时才显示行。我很想完全理解最后一点。 –

+0

群是由一个非常强大的条款。这是太宽泛的尝试解释在一个SO的答案,但有很多地方可以阅读它。这是一个很好的开始:http://www.w3schools.com/sql/sql_groupby.asp –

+0

太棒了!非常感谢你今天帮助我 –