use*_*347 10 mysql join polymorphic-associations
我想知道这是否可行.
我希望根据表1的数据加入2个表.示例表1包含列食物,其数据为"热狗".
我有一张叫热狗的桌子.
是否可以像JOIN一样进行JOIN.
SELECT * FROM table1 t join t.food on id = foodid
我知道它不起作用,但它甚至可行,是否有一个工作周围?
提前致谢.
Bil*_*win 11
不,你不能每行加入一个不同的表table1,甚至不能使用@Cade Roux建议的动态SQL.  
您可以加入hotdog餐桌,查看食物是"热狗"的行,并加入其他餐桌以获取其他特定食物价值.
SELECT * FROM table1 JOIN hotdog ON id = foodid WHERE food = 'hotdog'
UNION
SELECT * FROM table1 JOIN apples ON id = foodid WHERE food = 'apples'
UNION
SELECT * FROM table1 JOIN soups  ON id = foodid WHERE food = 'soup'
UNION 
...
这要求您了解食物的所有不同值,并且所有相应的食物表都具有相容的列,因此您可以将它们联合起来.
你正在做的是多态关联.也就是说,table1多个"父"表中引用行中的外键,具体取决于另一列中的值table1.这是关系数据库程序员常见的设计错误.
对于替代解决方案,请参阅我的答案:
我还在我的演示文稿中介绍了面向实用面向对象模型的SQL中的多态关联解决方案,以及我的书" SQL Antipatterns:避免数据库编程的陷阱".
| 归档时间: | 
 | 
| 查看次数: | 9260 次 | 
| 最近记录: |