JOIN ist eine Klausel, dass ist verwendet für die Kombinieren von bestimmten Bereichen von zwei Tabellen durch mitHilfe Werte gemeinsamen zu jeder. Es wird verwendet zu Kombinieren um Datensätze aus zwei oder mehr Tabellen in der Datenbank . Es ist mehr oder weniger ähnlich wie SQL JOIN.
join_table: table_reference JOIN table_factor [join_condition] | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition | table_reference LEFT SEMI JOIN table_reference join_condition | table_reference CROSS JOIN table_reference [join_condition]
Wir werden die folgenden zwei Tabellen in diesem Kapitel verwenden. Betrachten Sie die folgenden Tabelle namens CUSTOMERS.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | Kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
Betrachten Sie eine weitere Tabelle ORDERS wie folgt:
+-----+---------------------+-------------+--------+ |OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 3000 | | 100 | 2009-10-08 00:00:00 | 3 | 1500 | | 101 | 2009-11-20 00:00:00 | 2 | 1560 | | 103 | 2008-05-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
Es gibt verschiedene Arten von beitreten wie folgt gegeben:
JOIN-Klausel wird verwendet, um zu kombinieren und rufen Sie die Datensätze aus mehreren Tabellen. JOIN ist die gleiche wie OUTER JOIN in SQL. Eine Join-Bedingung ist es, mit den Primärschlüssel und Fremdschlüssel der Tabellen erhöht werden..
Die folgende Abfrage ausführt JOIN auf den Kunden- und Auftragstabellen, und ruft die Datensätze:
hive> SELECT c.ID, c.NAME, c.AGE, o.AMOUNT > FROM CUSTOMERS c JOIN ORDERS o > ON (c.ID = o.CUSTOMER_ID);
Auf erfolgreicher Ausführung der Abfrage, erhalten Sie die folgende Antwort zu sehen:
+----+----------+-----+--------+ | ID | NAME | AGE | AMOUNT | +----+----------+-----+--------+ | 3 | kaushik | 23 | 3000 | | 3 | kaushik | 23 | 1500 | | 2 | Khilan | 25 | 1560 | | 4 | Chaitali | 25 | 2060 | +----+----------+-----+--------+
Die HiveQL LEFT OUTER JOIN gibt alle Zeilen aus der linken Tabelle, auch wenn es keine Spiele in der rechten Tabelle vor. Das heißt, wenn der ON-Klausel übereinstimmt 0 (Null) Datensätze in der rechten Tabelle, die join immer noch Rückkehr eine Zeile in der Ergebnis , aber mit NULL in jeder Spalte der rechten Tabelle..
Ein LEFT JOIN gibt alle Werte aus der linken Tabelle zzgl die abgestimmten Werte aus der rechten Tabelle oder NULL bei Nicht abgestimmten JOIN-Prädikat.
Die folgende Abfrage veranschaulicht, LEFT OUTER JOIN zwischen Kunden- und Auftragstabellen:
hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE > FROM CUSTOMERS c > LEFT OUTER JOIN ORDERS o > ON (c.ID = o.CUSTOMER_ID);
Auf erfolgreicher Ausführung der Abfrage, erhalten Sie die folgende Antwort zu sehen:
+----+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +----+----------+--------+---------------------+ | 1 | Ramesh | NULL | NULL | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 3 | Kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | Kaushik | 1500 | 2009-10-08 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | | 5 | Hardik | NULL | NULL | | 6 | Komal | NULL | NULL | | 7 | Muffy | NULL | NULL | +----+----------+--------+---------------------+
Die HiveQL RIGHT OUTER JOIN gibt alle Zeilen aus der rechten Tabelle, auch wenn es keine Spiele in der linken Tabelle vor. Wenn der ON-Klausel übereinstimmt 0 (Null) Aufzeichnungen in der linken Tabelle, die JOIN noch Retouren gibt eine Zeile in der Ergebnis, aber mit NULL in jeder Spalte von linken Tabelle.
Ein RIGHT JOIN gibt alle Werte aus der rechten Tabelle, zzgl die übereinstimmWerte aus der linken Tabelle, oder NULL gar nicht passenden Verknüpfungsprädikat.
Die folgende Abfrage veranschaulicht, RIGHT OUTER JOIN zwischen Kunden- und Auftragstabellen.
hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE > FROM CUSTOMERS c > RIGHT OUTER JOIN ORDERS o > ON (c.ID = o.CUSTOMER_ID);
Auf erfolgreicher Ausführung der Abfrage, erhalten Sie die folgende Antwort zu sehen:
+------+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +------+----------+--------+---------------------+ | 3 | Kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | Kaushik | 1500 | 2009-10-08 00:00:00 | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | +------+----------+--------+---------------------+
Die HiveQL FULL OUTER JOIN kombiniert die Aufzeichnungen über den linken und den rechten Außen Tabellen, die die Join-Bedingung zu erfüllen. Die Join-Tabelle enthält entweder alle Datensätze aus beiden Tabellen oder füllt in NULL-Werte für fehlende Treffer auf beiden Seiten.
Die folgende Abfrage zeigt FULL OUTER JOIN zwischen Kunden- und Auftragstabellen:
hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE > FROM CUSTOMERS c > FULL OUTER JOIN ORDERS o > ON (c.ID = o.CUSTOMER_ID);
Auf erfolgreicher Ausführung der Abfrage, erhalten Sie die folgende Antwort zu sehen:
+------+----------+--------+---------------------+ | ID | NAME | AMOUNT | DATE | +------+----------+--------+---------------------+ | 1 | Ramesh | NULL | NULL | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 3 | Kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | Kaushik | 1500 | 2009-10-08 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | | 5 | Hardik | NULL | NULL | | 6 | Komal | NULL | NULL | | 7 | Muffy | NULL | NULL | | 3 | Kaushik | 3000 | 2009-10-08 00:00:00 | | 3 | Kaushik | 1500 | 2009-10-08 00:00:00 | | 2 | Khilan | 1560 | 2009-11-20 00:00:00 | | 4 | Chaitali | 2060 | 2008-05-20 00:00:00 | +------+----------+--------+---------------------+