是否可以在InnoDB表中使用Mysql外键进行反向查找?

时间:2009-06-29 15:28:50

标签: mysql innodb

我想知道是否可以在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的子行?

非常感谢! /维克多

1 个答案:

答案 0 :(得分:1)

在阅读了很多内容之后,一种选择是使用类似的东西:

SELECT
  referenced_table_name parent,
  table_name child,
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  referenced_table_name IS NOT NULL

这使所有表都有孩子。过滤到仅将孩子送回所请求的父母当然会很容易。然而,在缺点方面,需要上述额外查询(和处理)。

我仍然希望得到一个“更好”的解决方案,但这可能至少是一个开始;)