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;
通過使用上述查詢,我得到了下面的輸出。SQL查詢連接表
USER_ID | PRODUCT_ID | TIMESTAMPS
------------+------------------+-------------
1015826235 220003038067 1004841621
1015826235 300003861266 1005268799
1015826235 140002997245 1061569397
1015826235 *200002448035* 1005542471
如果你比較上述output from the query with the below Table2 data
,然後在last line of above output
的product_id
不與ITEM_ID
最後一行在下面Table2
數據進行匹配。
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
所以我的問題是
找到所有這些PRODUCT_ID(ITEM_ID)
和TIMESTAMPS(CREATED_TIME)
不與對應於特定BUYER_ID或USER_ID Table2
數據匹配。
所以我需要證明這樣的結果對於上述示例 -
BUYER_ID | ITEM_ID | CREATED_TIME | USER_ID | PRODUCT_ID | TIMESTAMPS
-----------+-------------------+-------------------------+---------------+------------------+------------------
1015826235 *210002448035* 2001-11-11 22:21:11 1015826235 *200002448035* 1005542471
我需要加入我與表2中寫道,以獲得上述結果上面的查詢。所以我需要在JOINING過程中使用我的上述查詢。這讓我很困惑。任何建議將不勝感激。
更新: -
我寫了下面的查詢,但不知何故,我無法做到這一點,我想實現輸出。誰能幫我這個?
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));
我正在使用Hive,Hive支持SQL語法,所以這就是我將這個問題標記爲'sql'和'join'的原因。所以JOIN將在HIVE中工作。我只需要加入基本。所以我認爲Oracle語法會很好。 – ferhan 2012-07-08 20:37:08
爲什麼最後一行不匹配?是否因爲時間戳與創建的時間不匹配? – dash 2012-07-08 23:03:57
我不確定我寫的實際查詢是否正確。這讓我很困惑。所以不確定上面的查詢是否正確。 – ferhan 2012-07-08 23:06:37