代码之家  ›  专栏  ›  技术社区  ›  Karthik

mysql通过单查询获取结果父id和类别id?

  •  1
  • Karthik  · 技术社区  · 15 年前

    CREATE TABLE `category` (
    `id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `category` VARCHAR( 50 ) NOT NULL ,
    `parent` INT( 4 ) NOT NULL
    )
    
    INSERT INTO `category` VALUES (1, 'MCA', 9);
    INSERT INTO `category` VALUES (2, 'M Tech', 9);
    INSERT INTO `category` VALUES (3, 'B Tech', 9);
    INSERT INTO `category` VALUES (4, 'BioTech', 9);
    INSERT INTO `category` VALUES (5, 'InfoTech', 9);
    INSERT INTO `category` VALUES (6, 'Chemical', 10);
    INSERT INTO `category` VALUES (7, 'Indus', 10);
    INSERT INTO `category` VALUES (8, 'Physics', 10);
    INSERT INTO `category` VALUES (9, 'Information Science', 0);
    INSERT INTO `category` VALUES (10, 'Others Science', 0);
    

    我需要这样的树形结构输出,

    结果是:

    Information Science
        MCA
        M Tech
        B Tech
        BioTech
        InfoTech
    Others Science
        Chemical
        Indus
        Physics
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Your Common Sense    15 年前

    Mysql有一个 nice article for you 虽然我个人会走物质化的道路

        2
  •  1
  •   Mark Byers    15 年前

    SELECT
        T1.category AS category,
        T2.category AS subcategory
    FROM category T1
    JOIN category T2
    ON T1.id = T2.parent
    
    category               subcategory
    'Information Science'  'MCA'
    'Information Science'  'M Tech'
    'Information Science'  'B Tech'
    'Information Science'  'BioTech'
    'Information Science'  'InfoTech'
    'Others Science'       'Chemical'
    'Others Science'       'Indus'
    'Others Science'       'Physics'
    

    这假设您的层次结构中只有两个级别。