首页 > 解决方案 > 如何实现一个需要一对一连接然后多对多的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'

非常感谢您提前

标签: mysqlsql

解决方案


不确定这是否适合您,但表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在一个子句中使用多个条件


推荐阅读