gpt4 book ai didi

php - 从查询/ View 字段中查找基础字段

转载 作者:行者123 更新时间:2023-11-29 13:54:03 25 4
gpt4 key购买 nike

为什么?我正在尝试动态查找外键指向的位置。为此,我在 information_schema.KEY_COLUMN_USAGE 中进行搜索。它适用于表,但不适用于 View 。

View 在 information_schema.VIEWS 中引用,view_definition 字段公开查询。我认为这是我能找到有关 View 字段来源的信息的唯一地方,对吗?

然后,我将在 SELECT 和 FROM 之间搜索我的字段名称。如果是别名,则获取表字段名和表名(如果是别名则解析表)。

最后一个复杂的问题是, View 可以引用另一个 View ,那么代码就必须是递归的。

我们举个例子( View 名称是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

它在VIEWS表中的存储方式是:

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`)))

我的输入是:

  • View 名称 (vw_mandates_articles)
  • 字段名称 (id_articles_category)

预期输出:

  • 字段表 (ste.articles)
  • 字段名称 (id_articles_category)//可以与输入相同,但不一定

我并不是要求别人为我编写它,我只是想在挖掘之前验证该方法。

有什么想法吗?好/坏方法,替代方案?

提前感谢您的灯光

最佳答案

是的。 View 仅具有存储在 information_schema.VIEWS 表中的查询中的字段。

<小时/>

不,没有比在查询中爆炸等更好的方法了...

<小时/>

我不建议进行递归 View 。可以肯定的是,它会很慢(mysql 必须将临时结果存储在硬盘上,这实际上不会提高性能)。

即使这不是最佳实践,我也倾向于增加冗余并通过使用单个查询(最多 1 个子选择)来获取数据。

关于php - 从查询/ View 字段中查找基础字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16170088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com