Como é a sintax correta do comando MySQL abaixo?

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

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.

1 curtida