Skip to content
Advertisement

SQL many joins many to many

I have 5 tables:

Table Reports

Report_Id | Report_name
-----------------
      1     | Income
      2     | Outcomes
      3     | Costs

Many to many table ReportsIpRel

Ip_Id | Report_Id
-----------------
    6   |    1
    4   |    2
    5   |    2
    2   |    2
    1   |    3

Table of InfoProviders

Ip_Id | Ip_Name
-----------------
    6   |    Comission
    4   |    Comapny
    5   |    Others
    2   |    People
    1   |    Traveler

Many to many table QueriesIpRel

Ip_Id | Query_Id
-----------------
    6   |    3
    4   |    3
    5   |    3
    2   |    5
    1   |    1

And table of Queries

Query_Id | Query_Name
-----------------
    1   |    connection
    2   |    distantcon
    3   |    shortconn
    4   |    linking
    5   |    grounding

The SELECT I am trying to achieve is the following:

Report_Id | Report_name | Ip_Id | Ip_Name | Query_Id | Query_Name
    2     | Outcomes    |  4    | Comapny |  3       | shortconn
    2     | Outcomes    |  5    | Others  |  3       | shortconn
    2     | Outcomes    |  2    | People  |  5       | grounding

I tried many left/inner joins like this:

left outer join ReportsIPRel rir on r.Report_Id = rir.Report_Id
left outer join InfoProvider ipr on rir.Ip_Id = ipr.Ip_Id
left outer join QueriesIPRel qir on ipr.Ip_Id = qir.Ip_Id 
left outer join Queries q on qir.Query_Id = q.Query_Id
where r.Report_Id= '2'

but all for nothing.

I have to use where condition: WHERE report_Id = ‘2’ /EXAMPLE

I’m trying to do this in ms SQL in SQL Server Management Studio.

Thank you in advance

Advertisement

Answer

Please try this query its working for me in SQL server:

Demo

select r.*, ipr.ip_id, ipr.Ip_Name, q.uery_Id, q.Query_Name from
reports r
left outer join ReportsIPRel rir on r.Report_Id = rir.Report_Id
left outer join InfoProviders ipr on rir.Ip_Id = ipr.Ip_Id
left outer join QueriesIPRel qir on ipr.Ip_Id = qir.Ip_Id 
left outer join Queries q on qir.Query_Id = q.uery_Id
where r.Report_Id= '2'
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement