select user_id, prod_and_ts.product_id as product_id, prod_and_ts.timestamps as
timestamps from testingtable2 LATERAL VIEW explode(purchased_item) exploded_table
as prod_and_ts;
Al usar la consulta anterior, obtengo el resultado siguiente.Consulta SQL JOIN con la Tabla
USER_ID | PRODUCT_ID | TIMESTAMPS
------------+------------------+-------------
1015826235 220003038067 1004841621
1015826235 300003861266 1005268799
1015826235 140002997245 1061569397
1015826235 *200002448035* 1005542471
Si se compara lo anterior output from the query with the below Table2 data
, entonces el product_id
en el last line of above output
no coincide con el ITEM_ID
en la última línea en los siguientes Table2
datos.
BUYER_ID | ITEM_ID | CREATED_TIME
-------------+-------------------+------------------------
1015826235 220003038067 2001-11-03 19:40:21
1015826235 300003861266 2001-11-08 18:19:59
1015826235 140002997245 2003-08-22 09:23:17
1015826235 *210002448035* 2001-11-11 22:21:11
Así que mi pregunta es
Encontrar todos los PRODUCT_ID(ITEM_ID)
TIMESTAMPS(CREATED_TIME)
y que no son coincidentes con los datos correspondientes a Table2
particular, buyer_id o USER_ID.
por eso es necesario para mostrar el resultado como este para el ejemplo- por encima de
BUYER_ID | ITEM_ID | CREATED_TIME | USER_ID | PRODUCT_ID | TIMESTAMPS
-----------+-------------------+-------------------------+---------------+------------------+------------------
1015826235 *210002448035* 2001-11-11 22:21:11 1015826235 *200002448035* 1005542471
necesito para unirse a la consulta anterior que escribí con tabla2 para obtener el resultado anterior. Entonces necesito usar mi consulta anterior en el proceso de JOINING. Eso me está confundiendo mucho. Cualquier sugerencia será apreciada.
ACTUALIZACIÓN: -
me escribió la siguiente consulta, pero de alguna manera yo no soy capaz de lograr el resultado que quería lograr. Puede alguien ayudarme con esto?
SELECT table2.buyer_id, table2.item_id, table2.created_time from
(select user_id, prod_and_ts.product_id as product_id, prod_and_ts.timestamps as
timestamps from testingtable2 LATERAL VIEW explode(purchased_item) exploded_table
as prod_and_ts) prod_and_ts JOIN table2 where
prod_and_ts.user_id = table2.buyer_id
and (product_id <> table2.item_id or
timestamps <> UNIX_TIMESTAMP(table2.created_time));
Estoy trabajando con Hive, y Hive admite la sintaxis de SQL, por lo que esta es la razón por la que etiqueto esta pregunta como 'sql' y' join'. Entonces JOIN funcionará en HIVE. Solo necesito UNIRME básicamente. Entonces creo que la sintaxis de Oracle estará bien. – ferhan
¿Por qué la última línea no coincide? ¿Es porque la marca de tiempo no coincide con el tiempo creado? – dash
No estoy seguro de si la consulta real que escribí es correcta o no. Eso me está confundiendo mucho. Por lo tanto, no estoy seguro de si la consulta anterior es correcta o no. – ferhan