mysql - 如何实现一个需要一对一连接然后多对多的sql查询?
问题描述
请告诉我如何实现此查询,该查询需要首先链接具有一对一关系的表,然后需要以多对多关系链接,我分享了一个表结构的示例:
table1
id
name
date
table2
id
table1_id
country
table3
id
first_name
last_name
table4
id
table3_id
type
city
table1_table3
id
table1_id
table3_id
table5
id
somefield
table1_table5
id
table1_id
table5_id
现在我尝试这个查询,但我不知道应该如何实现多对多键
select
table1.id id,
table3.first_name first_name,
table3.last_name last_name,
table4.type type,
table4.city city,
table2.country country,
table5.somefield somefield
from
table1 table1
inner join
table2 table2 on table1.id = table2.table1_id
inner join
table3 table3
inner join
table4 table4 on table4.table3_id = table3.id
inner join
table5 table5
where
table1.date > '2018-05-04'
非常感谢您提前
解决方案
不确定这是否适合您,但表table1_table5
可能应该与这样的 on-clause 连接
join table1_table5
on table1_table5.table1_id = table1.id
并且在该表下方table5
应该像这样连接
join table5 table5
on table1_table5.table5_id = table5.id
顺便说一句:您可以and
在一个子句中使用多个条件
推荐阅读
- c# - 如何创建鼠标光标的自定义幽灵轨迹?
- jmeter - Jmeter-Sql 服务器数据库 Windows 身份验证问题。在结果树中获得以下响应
- windows - 在以下情况下如何获取唯一记录
- c# - AuthorizeRouteView Authorizing 和 NotAuthorized 参数设置
- spring-boot - Spring SmartLifeCycle 顺序行为?
- sql - 比较日期,一张表,mssql
- ios - 如何在 Swift 中使用正则表达式设置信用卡 PAN NUMBER 的模式?
- excel - WorksheetFunction 所需的对象
- java - 我的 appium 测试在一台设备上运行了两次,但我需要在两台设备上并行运行它
- java - 在 Java 中使用供应商传递方法引用