2013-11-22 31 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的= =每个表的一个字段名称的比较,所有字段名称都以表名为前缀” –