为什么? 我想动态地找到外键指向的地方。为此,我在information_schema.KEY_COLUMN_USAGE中进行搜索。它适用于表格,但不适用于视图。从查询/查看字段中查找底层字段
views_schema.VIEWS中引用了视图,view_definition字段公开查询。 我认为这是唯一可以找到视图字段来自何处的信息,对吗?
然后,我会在SELECT和FROM之间搜索我的字段名称。如果它是别名,则获取表字段名称和表名(如果它是别名,则解析该表)。
最后的复杂情况是,视图可以引用另一个视图,那么代码将不得不递归。
让我们举个例子(视图名为vw_mandates_articles):
select ma.*, a.id_articles_unit, a.id_articles_category from mandates_articles ma
left join articles a on ma.id_article = a.id
它存储在意见表的方式是:
select `ma`.`id` AS `id`,
`ma`.`id_mandate` AS `id_mandate`,
`ma`.`id_article` AS `id_article`,
`ma`.`unit_price` AS `unit_price`,
`ma`.`description` AS `description`,
`a`.`id_articles_unit` AS `id_articles_unit`,
`a`.`id_articles_category` AS `id_articles_category`
from (`ste`.`mandates_articles` `ma`
left join `ste`.`articles` `a` on((`ma`.`id_article` = `a`.`id`)))
我的输入是:
- 视图名称(vw_mandates_articles)
- 字段名称(id_ articles_category)
预期输出:
- 字段表(ste.articles)
- 字段名称(id_articles_category)//可以是与输入相同,但不一定
我不是要求别人为我写,我只是想在挖掘之前验证方法。
有什么想法?好/坏的方法,替代品?
在此先感谢您的指示灯
我不明白我将如何检索基础表/字段与您的代码,你可以详细一点吗? – y0uri 2013-04-23 13:26:38
@ y0uri修复了我的答案,误解了你的问题;) – bwoebi 2013-04-23 13:33:12