【发布时间】:2017-06-13 06:31:42
【问题描述】:
我正在使用 LAMP 并通过 phpMyAdmin 维护 MySQl。每次我想在 InnoDB 表上构建多表查询时,我都厌倦了输入 JOIN。
有谁知道从外键生成 JOIN 语句的某些功能、插件、方法或资源?
【问题讨论】:
标签: mysql phpmyadmin
我正在使用 LAMP 并通过 phpMyAdmin 维护 MySQl。每次我想在 InnoDB 表上构建多表查询时,我都厌倦了输入 JOIN。
有谁知道从外键生成 JOIN 语句的某些功能、插件、方法或资源?
【问题讨论】:
标签: mysql phpmyadmin
我最终编写了一个查询,从所有外键构建 JOIN 语句:
CREATE VIEW Joins_All AS
SELECT
concat(" JOIN ",TABLE_NAME," ON ",
TABLE_NAME,".",COLUMN_NAME," = ",
REFERENCED_TABLE_NAME,".", REFERENCED_COLUMN_NAME)
AS myJoin
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME IS NOT NULL
UNION
SELECT
concat(" JOIN ",REFERENCED_TABLE_NAME," ON ",
TABLE_NAME,".",COLUMN_NAME," = ",
REFERENCED_TABLE_NAME,".", REFERENCED_COLUMN_NAME)
AS myJoin
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME IS NOT NULL
ORDER BY myJoin ASC
它会生成这样的东西:
在 Area_Tare.Id_Area = Area.Id_Area 上加入区域
加入 Area_Tare ON Area_Tare.Id_Area = Area.Id_Area
在 Insect.Id_Insect_Class = Insect_Class.Id_Insect_Class 上加入昆虫
在 Insect_Insumo_Formula_Ingredient.Id_Insect = Insect.Id_Insect 上加入昆虫
我保存了这个文件并复制/粘贴适当的行,如果我需要它们,或者我用所需表的名称过滤视图
这可以很容易地在 php 中进行调整(我目前不会这样做)以创建基于外键的 GUI 查询构建器。任何决定这样做的人,请随时使用/修改此代码。
【讨论】: