1
我在Hive中的两个表之间尝试一个简单的INNER JOIN。我有一个ORDERS表,另一个是LOG表。这是两者的结构:HiveQL INNER JOIN
订单:
id_operacion string
fecha string
id_usuario string
id_producto string
unidades int
id_bono string
precio float
precio_total float
ip string
日志:
host STRING
identity STRING
user STRING
time STRING
request STRING
status STRING
size STRING
referer STRING
agent STRING
不是在顺序表中的所有 'IP' 有一个值,其中一些是空。我想获取值order.id_usuario,order.id_producto,logs.host,logs.agent
。在order.ip = log.host的情况下。
我想这个查询:
SELECT order.id_producto,order.id_usuario,log.host,log.agent
FROM order JOIN log ON order.ip=log.host;
我不知道为什么,但查询响应我所有代理日志的表有,而且不仅与该IP匹配的那些两个表的地址。
我希望我已经解释了这个问题。有任何想法吗?
谢谢你的回复。我发现了一种解决问题的方法,如果我通过所有我想要选择的值进行组合,则它会正确响应。我真的不明白为什么我必须这样做......我认为加入条件就足够了。 – JayMash
如果你不得不按所有选择条件进行分组,它通常意味着你加入的两张桌子有着不同的关系。即一个订单有一行,另一个订单有多个行。 – sarin