2013-02-18 16 views
5

Używam gałąź 0.9.0 i próbuję wykonać kwerendę tjHive wiele podzapytania

`SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date;` 

ale zwraca błąd „pętlę (...) + wejście nie pasuje .... ". Czy Hive obsługuje wiele podkwerend z FROM podobnie jak Oracle DB?

Odpowiedz

6

Wiele dozwolonych w ulu subqueries.

Testowałem pod poniższym kodem, to działa.

select * from (select id from test where id>10) a 
join (select id from test where id>20) b on a.id=b.id; 

Proszę podać dokładny kod, aby móc podać odpowiednie rozwiązanie.

+0

dzięki, Balaswamy! Zrobiłem już zapytanie z JOIN, tak jak w twoim przykładzie. –

1

Dołącz podkwerendy jest obsługiwane Absolutnie.

Myślę, że kluczowym problemem jest to, że używasz SELECT...FROM.

Poprawna składnia jest SELECT * FROM

SELECT a.id, b.user 
FROM 
(SELECT * FROM a_table) a 
JOIN (SELECT * FROM b_table) b ON a.date = b.date; 
+0

Przypuszczam, że ... ma być skrótem dla "niektórych pól" – MikeKulls

0

Jeśli chcesz uzyskać pełny produkt kartezjański przed nałożeniem WHERE klauzula, zamiast:

SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date; 

należy użyć „dołączyć” w środku , tj.

SELECT a.id, b.user FROM (SELECT...FROM a_table) a join (SELECT...FROM b_table) b WHERE a.date = b.date; 

powyżej jest niedopuszczalne w trybie ścisłym.