【问题标题】:How to join with multiple tables of this complicated case?如何加入这种复杂情况的多个表?
【发布时间】:2015-06-19 04:59:35
【问题描述】:

我有 4 个具有以下关系的表。 Table_3 是星型模式的中心表。如何编写一个 sql 来连接这 4 个表?困难的是如何将 table_1 与 table_2 连接起来?我必须使用子查询(嵌套连接)吗?

table_1 <-- table_2 <-- table_3 --> table_4

【问题讨论】:

  • 如果它真的是一个明星比加入中心到所有末端。
  • 表结构是什么??

标签: sql join


【解决方案1】:

对于星型模式,您应该将每个表与中心表完全连接。
应该是这样的:

select *
from table_3 central
join table_1 t1 on central.id = t1.central_id
join table_2 t2 on central.id = t2.central_id
join table_4 t4 on central.id = t4.central_id
;

适用于 table_1 - 超出星型方案的情况。

select *
from table_3 central
join table_2 t2 on central.id = t2.central_id
join table_4 t4 on central.id = t4.central_id
join table_1 t1 on t2.id = t1.table_2_id
;

【讨论】:

  • 我要做的是将table_3与table_2和table_4连接起来,并将table_2与table_1连接起来
  • 在这种情况下,您的表 table_1 - 不是星型方案。我添加了新示例。
  • 太棒了!我很高兴!)
【解决方案2】:

按照您显示的链接 table_1 table_4

下面的查询应该得到所需的数据:

Select * from table_3 t3
join table_4 t4 on t3.IdOftable_4 = t4.Id
join table_2 t2 on t3.IdOftable_2 = t2.Id
join table_1 t1 on t2.IdOftable_1 = t1.Id

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多