2015-04-12 59 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

太棒了!非常感謝你今天幫助我 –