我正在尝试为产品创建类继承设计。
有一个包含所有公共字段的基表。然后,对于每种产品类型,都有一个单独的表,其中包含仅适用于该产品类型的字段
因此,为了获取产品的所有数据,我需要JOIN
基表以及与相关的任何表product_type
列在基表中。有没有办法让这个查询动态连接到表上?
这是一个试图说明我想要做什么的查询:
SELECT * FROM product_base b
INNER JOIN <value of b.product_type> t
ON b.product_base_id = t.product_base_id
WHERE b.product_base_id = :base_id
有没有办法做到这一点?
不,没有办法做到这一点。在解析查询时必须知道表名,以便解析器可以判断该表是否存在,以及它是否包含您引用的列。此外,优化器需要了解表及其索引,以便它可以制定使用索引的计划。
您要求的是在执行期间根据逐行找到的数据确定表。 RDBMS 无法在解析时知道all数据值对应于真实表格。
你没有理由这样做来实现类表继承 http://martinfowler.com/eaaCatalog/classTableInheritance.html。 CTI 支持表之间的真实引用。
相反,你描述的是反模式 http://www.pragprog.com/titles/bksqla/sql-antipatterns多态性关联。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)