SQLJOIN数据库表关联关系
SQL 的表关联关系主要有四种 inner join,left join,right join和full join,其区别和使⽤场景如下:
· inner join(内连接),在两张表进⾏连接查询时,只保留两张表中完全匹配的结果集。
· left join,在两张表进⾏连接查询时,会返回左表所有的⾏,即使在右表中没有匹配的记录。(⼀般left join 和right join 中都选择left join)
· right join,在两张表进⾏连接查询时,会返回右表所有的⾏,即使在左表中没有匹配的记录。
· full join,在两张表进⾏连接查询时,返回左表和右表中所有没有匹配的⾏。
full join 和union的功能⼀样,可以把两张表⾥没有匹配的⾏关联在⼀起。
在进⾏模型设计时,选择⽤哪种表关联⽅式会影响到你最终的物理表数据是否齐全,所以需要深刻理解每⼀种关联⽅式最终返回的值有哪些。sql中union多表合并
在模型设计时,要考虑业务场景,选择以哪张事实表作为主表。当门店流量表⾥某⼀天的数据为空时,意味着当天门店没有客流量,但是依然会产
当有⽣房租⽔电等固定成本,所以选择门店流量表作为主表时,采取left join 的⽅式关联财务指标汇总表时,不会返回对应的房租⽔电等数据。当有业务场景能够满⾜主表⽆数据产⽣,⼦表会有数据产⽣的情况表之间通过FULL JOIN 或者 UNION的⽅式。
业务场景能够满⾜主表⽆数据产⽣,⼦表会有数据产⽣的情况表之间通过FULL JOIN 或者 UNION的⽅式
现在确定表之间⽤FULL JOIN 的⽅式进⾏关联了,返回表中对应门店流量表⽆数据产⽣给空值,源表为财务指标汇总表的数据展⽰其对应数据。我们的物理表门店成本⽉度分析表如图所⽰,⽇期和门店编码作为主键。可能会有⼈有疑问,为什么⽇期和门店字段有多个来源表和多个来源字段。还是⽤门店流量表和财务指标汇总表以门店和⽇期进⾏全关联,那么2张表中都有的门店⽇期字段,现在合并为⼀张表,只展⽰⼀个门店⽇期字段。我们可以想象取客流量的数据时需要门店流量表的门店⽇期字段才能匹配出对应数据,同理房租⽔电费也需要对应的财务指标汇总表⾥的⽇期门店才能匹配出对应的数据。这样是是不是很好理解为啥物理表的主键字段需要多个来源表和来源字段了。我们的物理表即门店⽉度分析表源表有⼏张就需要有⼏个门店⽇期字段作为来源字段。
的源表有⼏张就需要有⼏个门店⽇期字段作为来源字段。