RE: Need help in drafting SQL query

  • From: Sourav Biswas <biswas.sourav@xxxxxxxxxxx>
  • To: Dimitar Draginov <dimitar.draginov@xxxxxxxxx>
  • Date: Sat, 24 Feb 2018 20:28:40 +0000

Hi Dimitar,

Thank you so very much!!! I never thought, someone would reply on a weekend.

I was exactly looking for this solution.

Thank you once again Sir! You saved my weekends!!! 😊




Thanks & Regards,
Sourav Biswas
+91-9650017306

From: Dimitar Draginov [mailto:dimitar.draginov@xxxxxxxxx]
Sent: 24 February 2018 23:20
To: biswas.sourav@xxxxxxxxxxx
Cc: oracle-l@xxxxxxxxxxxxx
Subject: Re: Need help in drafting SQL query

-- Here is the simplest and hopefully most powerful solution.
-- From what I've read it looks like table A is highest priority for retrieving 
data, therefore avoiding any complexity I've just created an outer join of A 
and C to main table B.
-- With NVL() I retrieve A data and only when a value is missing I retrieve B 
data.
-- As seen this resolves your ID values of 1,2,7 restriction too.
-- NOTE 1: I assume that all columns are not null-able. Otherwise side effects 
will occur..
-- NOTE 2: As seen I use the Oracle syntax for outer join..

select NVL(a.ID, c.ID) as ID,
       NVL(a.FIN_ID,c.FIN_ID) as FIN_ID,
       NVL(a.DATE,c.DATE) as DATE
  from B, A, C
 where a.FIN_ID(+) = b.FIN_ID
   and c.FIN_ID(+) = b.FIN_ID;

Regards,
  Dimitar

On Sat, Feb 24, 2018 at 8:31 AM, Sourav Biswas 
<biswas.sourav@xxxxxxxxxxx<mailto:biswas.sourav@xxxxxxxxxxx>> wrote:
Hello Everyone,

I need some help in drafting a query. We have below mentioned 3 tables (I’ve 
limited the columns for brevity).

Column FIN_ID is the primary key on Table B and Table A and C, has respective 
foreign keys.

FIN_ID column in Table A and C have 3 values in common, i.e. 1,2,7.

So, when I join these 3 tables, I want the output to display ID, FIN_ID and 
DATE columns from Table A and C. However, when FIN_ID is used in predicate, and 
value matches either 1 or 2 or 7 and, also, these values are present in Table 
A, then all 3 columns should be fetched from  Table A, or else, it should get 
the details from Table C.

For rest of the unique values of FIN_ID, it should fetch rows from respective 
tables.
Table A

Table B

Table C

id

fi_ID (FK)

date

fin_ID (PK)

id

fin_ID (FK)

date

a1

1

01-01-2018

1

c1

1

01-01-2017

a2

2

02-01-2018

2

c2

2

02-01-2017

a3

4

03-01-2018

3

c3

3

03-01-2017

a4

7

04-01-2018

4

c4

5

04-01-2017

a5

8

05-01-2018

5

c5

6

05-01-2017


6

c6

7

06-01-2017


7

c7

9

07-01-2017


8

c8

10

08-01-2017


9


10


NOTE: We are using 11.2.0.4 database.


Thanks & Regards,
Sourav Biswas
+91-9650017306<tel:+91%2096500%2017306>


Other related posts: