带条件的Mysql父代子代

问题描述 投票:0回答:0

我有一个sql表,里面有id、code、code_parent和code类型。

 id            code             code_parent   type
 1             banane            fruit        CU 
 2             fruit              food        GU 
 3             food                 eat       BU
 4             tomato            vegetable    BU

我试图写一个循环,以便为每一个代码,一个代码的父级BU,例如,水果与ID 2,有食物的父级,但GU级别是不同的BU,所以在这种情况下,我会寻找食物的父级,我会考虑作为代码,在ID = 3有食物与3级,所以它的结果,总的来说,我将会得到。

 id        code             code_parent   type
1             banane            food        BU 
2             fruit              food        BU
3             food                 eat       BU
4             tomato            vegetable    BU 

我试过这个,但它的工作,请如果你有任何想法帮助。

private void insertParentBu(List<Map<String, Object>> parentBu) {
    parentBu.forEach(row -> {
        String insertParentBu = "INSERT INTO `parent_bu` (`uo`,`parent_bu`,`type_parent`)" +
                "VALUES (?, ?, ?)";
        myrefJdbcTemplate.update(insertParentBu, preparedStatement -> {
            logger.info("Inserting uo {} , parent {}, level {}" , row.get("code"), row.get("code_parent") , row.get("level"));
            preparedStatement.setString(1, String.valueOf(row.get("code")));
            preparedStatement.setString(2, String.valueOf(row.get("code")));
            preparedStatement.setString(3, String.valueOf(row.get("level")));

        });
        String updateBuparent =  "UPDATE `parent_bu` SET `parent_bu` = ? , `type_parent` = ? WHERE `uo` = ? AND  type_parent <> 'BU' AND parent_bu <> '' ";
        myrefJdbcTemplate.update(updateBuparent, preparedStatement -> {
            preparedStatement.setString(1,String.valueOf(row.get("code_parent")));
            preparedStatement.setString(2,String.valueOf(row.get("level")));
            preparedStatement.setString(3,String.valueOf(row.get("code")));
        });


    }
    );


     } 
java prepared-statement hierarchy
© www.soinside.com 2019 - 2024. All rights reserved.