2015-07-21 22 views
0

語句我有兩個表:子查詢的WHERE多在SQL

Place 
-id 
-latitude 
-longitude 

Event 
-id 
-user_id 
-latitude 
-longitude 
-radius 

我需要有作爲輸出USER_ID誰一直在一個地方的名單。我不確定我可以使用子查詢來做到這一點,因爲我必須同時檢查兩個參數:緯度(+ - 半徑)和經度(+ - 半徑)。

承認其半徑始終爲1簡化問題,它給這個查詢:

SELECT * FROM event WHERE 
latitude > (SELECT latitude-1 FROM place) AND 
latitude < (SELECT latitude+1 FROM place) AND 
longitude > (SELECT longitude-1 FROM place) AND 
longitude < (SELECT latitude+1 FROM place) 

,因爲一個子查詢不能多行返回的失敗。什麼是正確的方法來做到這一點?

+0

@Siyual我同意。我會嘗試回來的第一個結果。我對這個有點懶。 – poiuytrez

+0

我已添加查詢。 – poiuytrez

+0

「精度」在哪裏存儲? –

回答

2

大約只是(我應該把恐慌引號,由於我沒有MySQL或數據來測試這個...)什麼

select distinct 
    place.id, 
    user_id 
from 
    event 
    inner join place on 
     event.latitude between 
      place.latitude - event.radius 
      and place.latitude + event.radius 
     and event.latitude between 
      place.longitude - event.radius 
      and place.longitude + event.radius; 
+0

它沒有任何引號。 – poiuytrez

+0

非常感謝您的確認:) –