I have 5 tables:
Table Reports
x
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:
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'