SQL 多连接多对多
Posted
技术标签:
【中文标题】SQL 多连接多对多【英文标题】:SQL many joins many to many 【发布时间】:2020-08-25 09:07:58 【问题描述】:我有 5 张桌子:
表格报告
Report_Id | Report_name
-----------------
1 | Income
2 | Outcomes
3 | Costs
多对多表 ReportsIpRel
Ip_Id | Report_Id
-----------------
6 | 1
4 | 2
5 | 2
2 | 2
1 | 3
信息提供者表
Ip_Id | Ip_Name
-----------------
6 | Comission
4 | Comapny
5 | Others
2 | People
1 | Traveler
多对多表 QueriesIpRel
Ip_Id | Query_Id
-----------------
6 | 3
4 | 3
5 | 3
2 | 5
1 | 1
查询表
Query_Id | Query_Name
-----------------
1 | connection
2 | distantcon
3 | shortconn
4 | linking
5 | grounding
我想要实现的 SELECT 如下:
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
我尝试了很多这样的左/内连接:
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'
但一切都是徒劳的。
我必须使用 where 条件:WHERE report_Id = '2' /EXAMPLE
我正在尝试在 SQL Server Management Studio 的 ms SQL 中执行此操作。
提前谢谢你
【问题讨论】:
SQL Server Management Studio 通常与 MS SQL Server 一起使用。你确定你使用的是 mysql 吗? 好的,我添加了连接 为 CREATE TABLE + INSERT INTO 脚本提供示例数据,而不是(或除了)表。或者创建在线小提琴。 【参考方案1】:请尝试这个查询它在 SQL 服务器中对我有用:
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'
【讨论】:
以上是关于SQL 多连接多对多的主要内容,如果未能解决你的问题,请参考以下文章