![](/img/trans.png)
[英]best practice database design for tracking progress through related tables (multiple left joins)
[英]database design best practice connecting multiple tables
抱歉,如果以前曾有人问过这个问题,但是我不知道该如何用Google能够理解的方式来表达它。
基本上,例如,如果您有3个表:
表A
表B1
表B2
并且所有3个表中的数据都以2种方式之一进行连接:
表A和表B1
要么
表A和表B2
哪种最佳做法是将它们连接到表中,为什么?
1个表,例如:
联接表
|Table A |Table B1 |Table B2 |
|tableA_ID|tableB1_ID|null |
|tableA_ID|null |tableB2_ID|
或每个联接有2个单独的表
表A和B1已加入
表A和B2已加入
还是还有另一种更好的方法?
连接表取决于表之间的字段和关系。 它还取决于您要查找的输出-基于此,您将需要连接表
我认为您实际上想要一个left join
,两个:
select a.tableA_ID, b1.tableB1_ID, b2.tableB2_ID
from a left join
b1
on a.tableA_ID = b1.tableA_ID left join
b2
on a.tableA_ID = b2.tableA_ID ;
尚不清楚您要做什么,但是鉴于您的预期结果, union all
可能会起作用:
select a.tableA_ID,
b.tableB1_ID as TableB1,
null as TableB2
from a join b on a.tableA_ID = b.tableA_ID
union all
select a.tableA_ID,
null,
b2.tableB2_ID
from a join b2 on a.tableA_ID = b2.tableA_ID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.