我想知道是否可以在Mysql(InnoDB)中使用FK进行反向查找。
原因 - 我想从db中读取类似XML的结构(每个“层”使用一个表),但能够动态地执行此操作。我希望能够通过添加新表并设置FK约束来更新xml结构。
澄清一下,比方说我们有一个表“parent”with和id(parent_id)以及另外两列(k1和k2)。 xml看起来像(省略id):
<parent>
<k1>v1</k1>
<k2>v2</k2>
</parent>
现在我们添加一个子表,其外键引用parent_id和另一列(ck1)。现在应该给出相同的查询(之后进行一些处理):
<parent>
<k1>v1</k1>
<k2>v2</k2>
<child>
<ck1>cv1</ck1>
</child>
</parent>
这可能吗?要“SELECT * FROM parent_table”并设置某种参数,还要返回带有FK的子行?
非常感谢! /维克多
答案 0 :(得分:1)
在阅读了很多内容之后,一种选择是使用类似的东西:
SELECT
referenced_table_name parent,
table_name child,
FROM
information_schema.KEY_COLUMN_USAGE
WHERE
referenced_table_name IS NOT NULL
这使所有表都有孩子。过滤到仅将孩子送回所请求的父母当然会很容易。然而,在缺点方面,需要上述额外查询(和处理)。
我仍然希望得到一个“更好”的解决方案,但这可能至少是一个开始;)