Como é a sintax correta do comando MySQL abaixo?

1 resposta Resolvido
anyblueangel3

Tenho um método que não está funcionando, a mensagem de erro diz que a sintaxe do comando MySQL está incorreta. Por favor, qual a sintaxe correta para o comando MySQL do método abaixo?

public ArrayList<Fornecedores> listarFornecedoresProdutoMP(ProdutosMP produtoMP) {
        listaFornecedores = new ArrayList<>();
        sql = "SELECT * FROM fornecedores AS f JOIN fornec_produtomp AS fp "
                + "WHERE f.id_cgc_cpf = ? "
                + "ON f.id_cgc_cpf = fp.id_fornecedor;";
        try {
            bd = BD.getInstance();
            statement = bd.connection.prepareStatement(sql);
            statement.setString(1, produtoMP.getId());
            resultSet = statement.executeQuery();
            while (resultSet.next()) {
                fornecedor = new Fornecedores();
                fornecedor.setId_cgc_cpf(resultSet.getString(1));
                fornecedor.setNome_razao(resultSet.getString(3));
                fornecedor.setTelefone(resultSet.getString(5));
                fornecedor.setCidade(resultSet.getString(10));
                listaFornecedores.add(fornecedor);
            }
        } catch (Exception erro) {
            JOptionPane.showMessageDialog(null, "Erro ao consultar fornecedores! \n" + erro);
        } finally {
            BD.getInstance().close();
        }
        return listaFornecedores;
    }

Se houver outros erros no método, favor me avisar, obrigado.
Atenciosamente,
Ronaldo

1 Resposta

pmlm
Solucao aceita

As condições do join (ON …) são após cada join

SELECT ....
   FROM ....
   JOIN ....  ON .....
  WHERE ....

No teu caso:

SELECT * 
   FROM fornecedores AS f 
   JOIN fornec_produtomp AS fp ON f.id_cgc_cpf = fp.id_fornecedor
  WHERE f.id_cgc_cpf = ?

E não precisas do ponto e virgula no final da query.

Criado 20 de setembro de 2022
Ultima resposta 20 de set. de 2022
Respostas 1
Participantes 2