You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "aditya (JIRA)" <ji...@apache.org> on 2018/05/22 12:21:00 UTC

[jira] [Created] (HIVE-19648) Multiple left outer join in single HQL query is giving wrong result .

aditya created HIVE-19648:
-----------------------------

             Summary: Multiple left outer join in single HQL query is giving wrong result .
                 Key: HIVE-19648
                 URL: https://issues.apache.org/jira/browse/HIVE-19648
             Project: Hive
          Issue Type: Bug
          Components: Beeline
         Environment: BEELINE HIVE 
            Reporter: aditya


*INPUT :-* 
*EMPLOYMENT*
PARTY_ID
1
2
3
4
5
6
*WORKPHONE*
PARTY_ID , Telephone_Num , PRIMARY_IND , CD
1,100,Y,A
2,200,Y,A
4,300,N,A
5,400,N,C

select
distinct,
E.PARTY_ID ,
WP1.Telephone_Num ,
WP2.Telephone_Num ,
WP3.Telephone_Num ,
WP4.Telephone_Num ,
WP5.Telephone_Num ,
WP6.Telephone_Num 
FROM
EMPLOYMENT E 
*LEFT OUTER JOIN WORKPHONE WP1*
ON (E.PARTY_ID = WP1.PARTY_ID
AND WP1.PRIMARY_IND = 'Y' 
AND WP1.CD = 'B')
LEFT OUTER JOIN WORKPHONE WP2
ON (E.PARTY_ID = WP2.PARTY_ID
AND WP2.CD = 'C') 
*LEFT OUTER JOIN WORKPHONE WP3*
ON (E.PARTY_ID = WP3.PARTY_ID
AND WP3.CD = 'A' )
LEFT OUTER JOIN WORKPHONE WP4
ON (E.PARTY_ID = WP4.PARTY_ID
AND WP4.CD = 'D ) 
LEFT OUTER JOIN WORKPHONE WP5
ON (E.PARTY_ID = WP5.PARTY_ID
AND WP5.CD = 'E' ) 
LEFT OUTER JOIN WORKPHONE WP6
ON (E.PARTY_ID = WP6.PARTY_ID
AND WP6.CD = 'F') ;

*Expected output :-* 
E.PARTY_ID ,Telephone_Num1,Telephone_Num2,Telephone_Num3,Telephone_Num4,Telephone_Num5,Telephone_Num6
1,100,null,null,null,null,null
2,200,null,null,null,null,null
3,null,null,null,null,null,null
4,null,null,null,null,null,null
5,null,null,400,null,null,null
6,null,null,null,null,null,null

*Actual output :-*
E.PARTY_ID ,Telephone_Num1,Telephone_Num2,Telephone_Num3,Telephone_Num4,Telephone_Num5,Telephone_Num6
1,null,null,null,null,null,null
2,null,null,null,null,null,null
3,null,null,null,null,null,null
4,null,null,null,null,null,null
5,null,null,null,null,null,null
6,null,null,null,null,null,null

However when we are chaging the position of the tables , it is showing correct result :-

select
distinct,
E.PARTY_ID ,
WP1.Telephone_Num ,
WP2.Telephone_Num ,
WP3.Telephone_Num ,
WP4.Telephone_Num ,
WP5.Telephone_Num ,
WP6.Telephone_Num 
FROM
EMPLOYMENT E 
*LEFT OUTER JOIN WORKPHONE WP1*
ON (E.PARTY_ID = WP1.PARTY_ID
AND WP1.PRIMARY_IND = 'Y' 
AND WP1.CD = 'B')
LEFT OUTER JOIN WORKPHONE WP2
ON (E.PARTY_ID = WP2.PARTY_ID
AND WP2.CD = 'C') 
LEFT OUTER JOIN WORKPHONE WP4
ON (E.PARTY_ID = WP4.PARTY_ID
AND WP4.CD = 'D ) 
LEFT OUTER JOIN WORKPHONE WP5
ON (E.PARTY_ID = WP5.PARTY_ID
AND WP5.CD = 'E' ) 
LEFT OUTER JOIN WORKPHONE WP6
ON (E.PARTY_ID = WP6.PARTY_ID
AND WP6.CD = 'F')
*LEFT OUTER JOIN WORKPHONE WP3*
ON (E.PARTY_ID = WP3.PARTY_ID
AND WP3.CD = 'A' ) ;

*Result is coming as expected .*

*Note :-* When we have matching value in the last left outer joined table , result is coming as expected .However when the last table in the left outer join has no matched value it is displaying null value for each column .

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)