【问题标题】:MySQL phpMyAdmin build JOIN's from foreign keysMySQL phpMyAdmin 从外键构建 JOIN
【发布时间】:2017-06-13 06:31:42
【问题描述】:

我正在使用 LAMP 并通过 phpMyAdmin 维护 MySQl。每次我想在 InnoDB 表上构建多表查询时,我都厌倦了输入 JOIN。

有谁知道从外键生成 JOIN 语句的某些功能、插件、方法或资源?

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:

    我最终编写了一个查询,从所有外键构建 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 查询构建器。任何决定这样做的人,请随时使用/修改此代码。

    【讨论】:

    • 此外,在 where 子句中,您可以过滤表以仅获取所需的关系。 :)
    猜你喜欢
    • 2014-12-03
    • 2013-09-07
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2011-07-25
    • 2016-10-03
    • 2023-03-08
    相关资源
    最近更新 更多