2013-11-22 46 views
2

如何在Google Big Query中使用間隔連接兩個表格?如何使用間隔交叉連接大查詢?

我有兩個表:

Table CarsGPS: 
ID | Car | Latitude | Longitude 
1 | 1 | -22.123 | -43.123 
2 | 1 | -22.234 | -43.234 
3 | 2 | -22.567 | -43.567 
4 | 2 | -22.678 | -43.678 
... 

Table Areas: 
ID | LatitudeMin | LatitudeMax | LongitudeMin | LongitudeMax 
1 | -22.124  | -22.120  | -43.124  | -43.120 
2 | -22.128  | -22.124  | -43.128  | -43.124 
... 

我想CROSS JOIN這些表來檢查在哪些領域每輛車通過使用谷歌大查詢通過。

在常規的SQL服務器我會做:

SELECT A.ID, C.Car 
FROM Cars C, Areas A 
WHERE C.Latitude BETWEEN A.LatitudeMin AND A.LatitudeMax AND 
     C.Longitude BETWEEN A.LongitudeMin AND A.LongitudeMax 

但谷歌大查詢只允許我用做連接(甚至加入EACH)連接表中完全匹配。而「從X,Y」表示UNION,而不是JOINS。

那麼,這是不是一種選擇:

SELECT A.ID, C.Car 
FROM Cars C 
JOIN EACH 
    Areas A 
    ON C.Latitude BETWEEN A.LatitudeMin AND A.LatitudeMax AND 
    C.Longitude BETWEEN A.LongitudeMin AND A.LongitudeMax 

然後,我怎麼可以運行它相似的東西,以確定哪些汽車各區域內通過呢?

感謝高級,

回答

2

BigQuery現在支持CROSS JOIN。您的查詢會是這樣的:

SELECT A.ID, C.Car 
FROM Cars C 
CROSS JOIN Areas A 
WHERE C.Latitude BETWEEN A.LatitudeMin AND A.LatitudeMax AND 
    C.Longitude BETWEEN A.LongitudeMin AND A.LongitudeMax 
+0

約旦,當這個版本預計的任何消息? –

+1

此版本現已發佈;交叉連接應該工作。 –

+0

有什麼獨特的語法?我仍然收到「錯誤:ON子句必須是AND的= =每個表的一個字段名稱的比較,所有字段名稱都以表名爲前綴」 –