[RESOLVIDO] Como pegar id de duas tabelas e aplicar em outra

Caros, boa noite!

Possuo tabelas tbtipodedoacao e tbmaterial que estão relacionadas com a tabela tbnecessidade. Estou inserindo dados nas 2 tabelas e quero pegar a id da ultima linha registrada tanto da tbtipodedoacao quanto a tbmaterial e inserir na tabela tbnecessidade.


DAO

public boolean setAdicionar(NecessidadeDTO Necessidade) throws SQLException, ClassNotFoundException {

    String sql = "INSERT INTO tbtipodedoacao (desc_tipo) VALUES (?)";
    PreparedStatement ps = super.getPreparedStatement(sql);
    ps.setString(1, Necessidade.getTipo());
    int ret = ps.executeUpdate();

    String sql2 = "INSERT INTO tbmaterial (nome_material) VALUES (?)";
    PreparedStatement ps2 = super.getPreparedStatement(sql2);
    ps2.setString(1, Necessidade.getNome());
    int ret2 = ps2.executeUpdate();

    String sql3 = "INSERT INTO tbnecessidade "
            + "(desc_necessidade, progresso_necessidade, fk_id_material, fk_id_tipo)"
            + " VALUES (?, ?, LAST_INSERT_ID(), LAST_INSERT_ID())";
    PreparedStatement ps3 = super.getPreparedStatement(sql3);
    ps3.setString(1, Necessidade.getDescricao());
    ps3.setInt(2, Necessidade.getProgresso());
    int ret3 = ps3.executeUpdate();

    ps.close();
    ps2.close();
    ps3.close();
    super.getFechaConnection();
    return ret > 0 || ret2 > 0 || ret3 > 0;

}

Utilizando esse código estou apenas pegando a id da tabela tbmaterial e aplicando nas colunas Fk_id_material e FK_id_tipo na tabela tbnecessidade.

Acredito que vc poderia fazer um subselect dentro do seu insert, ficaria mais ou menos assim:

"INSERT INTO tbnecessidade "+"(desc_necessidade, progresso_necessidade, fk_id_material, fk_id_tipo)"
        + " VALUES (?, ?, (select max(pk_id_Material) from tbmaterial),(select max(pk_id_Tipo) from tbTipoOperacao))

Funcionou, muito obrigado! Passei a semana toda quebrando a cabeça com esse problema.

1 curtida

Como vc invocou esse metodo no botão ? esse metodo tem o retorno de 3 objetos ?