Ajuda Mysql + Netbeans, Duplicação de Itens na JTable

Eu estou tentando fazer um sistema simples, que é só para cadastrar as despesas de uma construção, que tem somente cadastro de fornecedor, e material, os cadastros estão funcionando normalmente, mas quando vou na pagina de relatório, que é uma tabela que pega dados de duas tabelas do meu banco de dados, aparece que o material foi cadastrado em todos os fornecedores, só ocorre isso na tabela, no banco de dado o material é cadastrado corretamente, ligando o material com apenas um fornecedor, alguém poderia ajudar ?
`/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.PjContrucao.telas;

import br.com.PjContrucao.dal.ModuloDeConexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import net.proteanit.sql.DbUtils;

/**
*

  • @author CesarAugusto
    */
    public class TelaRelatorio extends javax.swing.JInternalFrame {

    Connection conexao = null;
    PreparedStatement pst = null;
    ResultSet rs = null;

    /**

    • Creates new form TelaRelatorio
      */
      public TelaRelatorio() {
      initComponents();
      conexao = ModuloDeConexao.conector();
      Update_Table();
      totalSaldo();
      SaldoGasto();
      }

    private void totalSaldo() {
    String sql = “select sum(saldosal) as TotalSaldo from tbaddsaldo”;
    try {
    pst = conexao.prepareStatement(sql);
    rs = pst.executeQuery();
    if (rs.next()) {
    lblTotalSaldo.setText(Double.toString(rs.getDouble(“TotalSaldo”)));

         }
    
     } catch (Exception e) {
    
         JOptionPane.showMessageDialog(null, e);
     }
    

    }

    private void SaldoGasto() {
    String sql = “select sum(valormat) as SaldoGasto from tbmaterial”;
    try {
    pst = conexao.prepareStatement(sql);
    rs = pst.executeQuery();
    if (rs.next()) {
    lblSaldoGasto.setText(Double.toString(rs.getDouble(“SaldoGasto”)));

         }
    
     } catch (Exception e) {
    
         JOptionPane.showMessageDialog(null, e);
     }
    

    }

    private void Update_Table() {
    try {
    String sql = “select F.idfor,nomefor,\n” + “M.nomemat,quantidademat,valormat\n” + “from tbfornecedor as F\n”
    + “inner join tbmaterial as M;”;
    pst = conexao.prepareStatement(sql);
    rs = pst.executeQuery();
    tblRelatorio.setModel(DbUtils.resultSetToTableModel(rs));

     } catch (Exception e) {
         JOptionPane.showMessageDialog(null, e);
     }
    

    }

    /**

    • This method is called from within the constructor to initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is always

    • regenerated by the Form Editor.
      */
      @SuppressWarnings(“unchecked”)
      //
      private void initComponents() {

      jScrollPane1 = new javax.swing.JScrollPane();
      tblRelatorio = new javax.swing.JTable();
      jLabel1 = new javax.swing.JLabel();
      lblSaldo = new javax.swing.JLabel();
      jLabel2 = new javax.swing.JLabel();
      lblTotalSaldo = new javax.swing.JLabel();
      lblSaldoGasto = new javax.swing.JLabel();
      jLabel3 = new javax.swing.JLabel();

      setClosable(true);
      setIconifiable(true);
      setMaximizable(true);
      setPreferredSize(new java.awt.Dimension(607, 465));

      tblRelatorio.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] {

       },
       new String [] {
           "ID", "Título 2"
       }
      

      ));
      tblRelatorio.getTableHeader().setReorderingAllowed(false);
      jScrollPane1.setViewportView(tblRelatorio);

      jLabel1.setFont(new java.awt.Font(“Tahoma”, 1, 18)); // NOI18N
      jLabel1.setText(“Saldo Disponivel:”);

      lblSaldo.setFont(new java.awt.Font(“Tahoma”, 1, 18)); // NOI18N
      lblSaldo.setText("Saldo Total: ");

      jLabel2.setFont(new java.awt.Font(“Tahoma”, 1, 18)); // NOI18N
      jLabel2.setText(“Saldo Gasto:”);

      lblTotalSaldo.setFont(new java.awt.Font(“Tahoma”, 1, 14)); // NOI18N
      lblTotalSaldo.setForeground(new java.awt.Color(0, 0, 153));
      lblTotalSaldo.setText(“Total Saldo”);

      lblSaldoGasto.setFont(new java.awt.Font(“Tahoma”, 1, 14)); // NOI18N
      lblSaldoGasto.setForeground(new java.awt.Color(255, 0, 0));
      lblSaldoGasto.setText(“Saldo Gasto”);

      jLabel3.setFont(new java.awt.Font(“Tahoma”, 1, 14)); // NOI18N
      jLabel3.setForeground(new java.awt.Color(0, 0, 153));
      jLabel3.setText(“Saldo Disponivel”);

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGap(24, 24, 24)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addComponent(lblSaldo)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      .addComponent(lblTotalSaldo)
      .addGap(62, 62, 62)
      .addComponent(jLabel2)
      .addGap(18, 18, 18)
      .addComponent(lblSaldoGasto))
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 526, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGroup(layout.createSequentialGroup()
      .addComponent(jLabel1)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      .addComponent(jLabel3)))
      .addContainerGap(41, Short.MAX_VALUE))
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGap(22, 22, 22)
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 261, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGap(18, 18, 18)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(lblSaldo)
      .addComponent(jLabel2)
      .addComponent(lblTotalSaldo)
      .addComponent(lblSaldoGasto))
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 37, Short.MAX_VALUE)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jLabel1)
      .addComponent(jLabel3))
      .addGap(53, 53, 53))
      );

      setBounds(0, 0, 607, 465);
      }//

    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblSaldo;
    private javax.swing.JLabel lblSaldoGasto;
    private javax.swing.JLabel lblTotalSaldo;
    private javax.swing.JTable tblRelatorio;
    // End of variables declaration
    }
    `

E se alguém souber, eu baixei o rs2xml.jar, para passar os dados do banco, para a jtable, e agora não sei alterar os nomes na coluna, agradeço desde ja.