SQL-Abfrage-JOIN mit Tabelle

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;

Mithilfe der obigen Abfrage, erhalte ich die unten Ausgabe.

USER_ID     |    PRODUCT_ID    |   TIMESTAMPS
------------+------------------+-------------
1015826235       220003038067      1004841621
1015826235       300003861266      1005268799
1015826235       140002997245      1061569397
1015826235      *200002448035*     1005542471

Vergleicht man die oben output from the query with the below Table2 data, dann die product_id im last line of above output ist nicht in übereinstimmung mit den ITEM_ID in der letzten Zeile in der unten Table2 Daten.

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

Also meine Frage ist

Finden all jene PRODUCT_ID(ITEM_ID) und TIMESTAMPS(CREATED_TIME) sind nicht in übereinstimmung mit Table2 entsprechenden Daten insbesondere BUYER_ID oder USER_ID.

Also muss ich zeigen das Ergebnis, wie dies für das obige Beispiel-

BUYER_ID   |     ITEM_ID       |      CREATED_TIME       |     USER_ID   |       PRODUCT_ID     |   TIMESTAMPS
-----------+-------------------+-------------------------+---------------+------------------+------------------
1015826235     *210002448035*       2001-11-11 22:21:11     1015826235      *200002448035*     1005542471

Muss ich JOIN die obige Abfrage, die ich schrieb mit Tabelle2 zu bekommen, das obige Ergebnis. Also muss ich die Verwendung meiner obigen Abfrage in der Fügeprozess. Das ist verwirrend mich sehr. Jede Anregung wird dankbar sein.

UPDATE:-

Schrieb ich die folgenden Abfrage, aber irgendwie bin ich nicht in der Lage zu erreichen, die Ausgabe, die ich erreichen wollte. Kann mir jemand helfen mit diesem?

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));
  • Ich arbeite mit Hive und Hive unterstützt die SQL-ähnliche syntax, so dass ist der Grund, warum ich tag diese Frage als sql und join. So kommen arbeiten im BIENENSTOCK. Ich muss einfach BEITRETEN, im Grunde. Also ich denke, dass Oracle-syntax wird in Ordnung sein.
  • Warum ist die Letzte Zeile, die nicht zusammenpassen? Ist es, weil der Zeitstempel nicht in übereinstimmung mit der Zeit erschaffen?
  • Ich bin mir nicht sicher, ob die tatsächliche Abfrage, die ich geschrieben habe richtig ist oder nicht. Das ist verwirrend mich sehr. Also nicht sicher, ob die Abfrage richtig ist oder nicht.
  • Ihre Abfrage sieht okay aus; versuchen Sie die folgenden JOIN-durch den Austausch alles in Ihrer Abfrage oben nach ) prod_and_ts : LEFT JOIN Tabelle2, wo prod_and_ts.user_id = table2.buyer_id und product_id = table2.item_id UND Zeitstempel = UNIX_TIMESTAMP(Tabelle2.created_time), WO Tabelle2.item_id NULL IST - dies sollte markieren Sie alle Zeilen, die nicht passen, die auf Benutzer -, Produkt-und Zeitstempel
  • Ich bin mir nicht sicher, ob deine Abfrage richtig ist oder nicht, da haben Sie die beiden where-Klausel in der Abfrage, die Sie erwähnt. Sind Sie sicher, dass Ihre Abfrage richtig ist?
  • Ihre Bewertung ist zu hoch, um doppelt öffnen **und vor allem 2 Duplikate der gleichen Frage. [stackoverflow.com/q/11336950/1166147][1] [stackoverflow.com/q/11428269/1166147][2]

InformationsquelleAutor arsenal | 2012-07-08
Schreibe einen Kommentar