Erreur dans la Requête de la Ruche tout en participant à des tables
Je suis incapable de passer le contrôle d'égalité ci-dessous à l'aide de la requête de la RUCHE.
J'ai 3 table et je veux me joindre à ces tables. J'ai essayer comme ci-dessous, mais je reçois l'erreur :
A ÉCHOUÉ: Erreur dans l'analyse sémantique: Ligne 3:40 à la Fois à gauche et à droite alias rencontrées dans la JOINTURE 'visit_date'
select t1.*, t99.* from table1 t1 JOIN
(select v3.*, t3.* from table2 v3 JOIN table3 t3 ON
( v3.AS_upc= t3.upc_no AND v3.start_dt <= t3.visit_date AND v3.end_dt >= t3.visit_date AND v3.adv_price <= t3.comp_price ) ) t99 ON
(t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
ÉDITÉ basé sur l'aide de FuzzyTree:
1er:
Nous avons essayé de modifier la requête ci-dessus à l'aide de entre et la clause where, mais de ne pas avoir de sortie de la requête.
Mais Si nous avons changé la requête ci-dessus par la suppression de la clause de la date, puis j'ai eu de la sortie en fonction "de la v3.adv_price <= t3.comp_price", mais pas à l'aide de "filtre de date".
select t1.*, t99.* from table1 t1 JOIN
(select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no)
where v3.adv_price <= t3.comp_price
) t99 ON
(t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
2e :
Ensuite, nous avons essayé de passer une seule date :
select t1.*, t99.* from table1 t1 JOIN
(select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no)
where v3.adv_price <= t3.comp_price and v3.start_dt <= t3.visit_date
) t99 ON
(t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
Alors, maintenant, c'est en montrant un peu de résultat, mais si nous passons à la fois le début et date de fin du filtre, il; ne donne pas de résultat.
OriginalL'auteur Abhi | 2014-09-13
Vous devez vous connecter pour publier un commentaire.
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joint
Essayez de déplacer votre inégalités à l'
where
clauseJ'ai rencontré le même problème. La solution proposée est la bonne. Je note cependant que le message d'erreur pourrait être améliorée. Il est trompeur.
OriginalL'auteur FuzzyTree