爲什麼? 我想動態地找到外鍵指向的地方。爲此,我在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