[英]How do I Join Two MySQL Tables Using a Function
我需要一些幫助加入兩個表。 我有:
my_type_table
,具有以下列:
...和neighborhood_shapes
,其中包含列:
我有一個名為myWithin
的函數,該函數檢查緯度和經度以查看它們是否在鄰域多邊形中。 它以緯度和鄰域形狀為參數。 如果該點不在多邊形內,則myWithin
函數返回0;如果在多邊形內,則返回1。
我可以做出如下選擇語句:
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
我的問題是我有很多社區。 我不想每次都輸入鄰居。 有沒有辦法刪除“ Newport”? 基本上,我希望函數在每個點上運行,並提供類型,緯度,經度以及該點位於哪個鄰域中?
我可以復制上面的select並將select語句與UNION ALL聯接在一起,但是輸入每個鄰域的名稱將是一場噩夢。 必須有一個更好的方法。
有什么建議么?
我當然沒有測試過……但是似乎可以像這樣重組:
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
你有沒有嘗試過...
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
function getNeighborhood ($neighborhood) {
$sql = "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 = $neighborhood)) = 1";
$result = /** Do Query Here**/
return $result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.