请告诉我如何实现此查询,该查询需要首先链接具有一对一关系的表,然后需要以多对多关系链接,我分享了一个结构示例表:
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'
非常感谢您提前
答案 0 :(得分:2)
不确定这是否适合你,但是表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
btw:你可以在on-clause
中使用and
来表示多个条件
答案 1 :(得分:1)
只需使用普通的连接关系:
select
t1.id id,
t3.first_name first_name,
t3.last_name last_name,
t4.type type,
t4.city city,
t2.country country,
t5.somefield somefield
from table1 t1
join table2 t2 on t1.id = t2.table1_id
join table1_table3 t13 on t13.table1_id = t1.id
join table3 t3 on t3.id = t13.table3_id
join table4 t4 on t4.table3_id = t3.id
join table1_table5 t15 on t15.table1_id = t1.id
join table5 t5 on t5.id = t15.table5_id
where
t1.date > '2018-05-04'
此外:
我使用t1
等较短的别名来提高可读性。
我将inner join
替换为join
,因为inner
是多余的。如果您愿意,可以添加回来。