2010-06-25 51 views
1

我需要一些幫助來連接兩個表格。我有:如何使用函數加入兩個MySQL表格

my_type_table,其中有列:

  • 類型(VARCHAR)
  • 緯度(十進制)
  • 經度(十進制)

...和neighborhood_shapes ,其中有列:

  • 個街區(VARCHAR)
  • neighborhood_polygons(幾何)

我有一個叫做myWithin功能,檢查的經度和緯度,看看他們是否在附近的多邊形。它以緯度和鄰域形狀爲參數。如果該點不在多邊形中,則myWithin函數返回0,如果該點在多邊形內,則返回1。

我可以做一個select語句如下:

SELECT type, latitude, longitude, 'Newport' AS neighborhood 
    FROM my_type_table 
WHERE myWithin(POINTFROMTEXT(CONCAT('POINT(', latitude, ' ', longitude, ')')) , 
       (SELECT neighborhood_shapes.neighborhood_polygons 
        FROM neighborhood_shapes 
       WHERE neighborhood_shapes.neighborhoods = 'Newport')) = 1 

這個選擇的結果,例如:

type | latitude | longitude | neighborhood 
--------------------------------------------- 
small | 30.3030 | -70.7070 | Newport 

我的問題是,我有很多的街區。我不想每次輸入社區。有沒有辦法去除「紐波特」?基本上,我希望函數能夠在每個點上運行,並給我類型,緯度,經度以及點的位置。

我可以複製上面的選擇並加入與UNION ALL的選擇語句,但這將是一個噩夢輸入每個社區的名字。有一個更好的方法。

有什麼建議嗎?

回答

2

我沒有這門課程的測試...但它似乎是它可以進行重組,與此類似:

SELECT t.type, t.latitude, t.longitude, s.neighborhood 
    FROM my_type_table t, neighborhood_shapes s 
WHERE myWithin(POINTFROMTEXT(CONCAT('POINT(', t.latitude, ' ', t.longitude, ')')) ,    s.neighborhood_shapes.neighborhood_polygons) = 1 
+0

嗨蘭迪, 非常感謝你的幫助!男人也是那麼快!它效果很好。 (蘭迪沒有測試所以,對於那些誰需要複製它,在這裏需要一些非常小的改動): 一),我不得不改變s.neighborhood到s.neighborhoods B)變化看.neighborhood_shapes.neighborhood_polygons to s.neighborhood_polygons c)添加另一個)後s.neighborhood_polygons 我一直在這個問題上工作了幾天,你在5分鐘內解決了它。再次謝謝你!! – Laxmidi 2010-06-25 18:29:56

1

你試過......

SELECT DISTINCT type, 
       latitude, 
       longitude, 
       ns.neighborhoods AS neighborhood 
    FROM my_type_table, 
     neighborhood_shapes ns 
    WHERE myWithin(POINTFROMTEXT(CONCAT('POINT(', latitude, ' ', longitude, ')')) , 
        (SELECT neighborhood_shapes.neighborhood_polygons 
         FROM neighborhood_shapes 
         WHERE neighborhood_shapes.neighborhoods = ns.neighborhoods)) = 1 
+0

(我沒有檢查過,因爲我沒有任何東西像您的功能可用於我。) – 2010-06-25 17:46:51

+0

似乎是一個類似的反應 - 對不起,你是在我發佈時不可見的... – Randy 2010-06-25 17:49:53

+0

嗨布賴恩, 感謝您的意見。我很感激幫助。 – Laxmidi 2010-06-25 21:05:42

0

功能getNeighborhood($附近){

$ SQL =「SELECT類型,緯度,經度, '紐波特' AS附近 FROM my_type_table WHERE myWithin(POINTFROMTEXT(CONCAT ('POINT(',latitude,'',longitude,')')), (SELECT neighborhood_shapes.neighborhood_polygons FROM neighborhood_shapes WHERE neighborhood_shapes.neighborhoods = $ neighborhood))= 1「;

$結果=/**待辦事項查詢這裏**/

返回$結果; }