Я пытаюсь получить строки с товарами под аналогичным именем категории из определенной таблицы categories
в базе данных, и для каждой из строк я сделал второй запрос SQL для суммирования количеств заказы, сделанные за последнюю неделю от orders table
. Я хочу, чтобы результаты были добавлены в модель таблицы, но добавлена только одна строка.
private void analyticsTableQuery(String Category) {
this.categorySelected = Category;
categoryTitle.setText(Category);
int ordered;
int initial;
String query2 = "SELECT * FROM stock INNER JOIN category ON stock.Category_id=category.id where category.Category_Name='"+Category+"'";
try {
con = DriverManager.getConnection("jdbc:mysql://194.5.156.94:3306/u843360242_tukule?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","u843360242_tukule","cocaine");
pst = con.prepareStatement(query2);
rs=pst.executeQuery();
DefaultTableModel tm=(DefaultTableModel)analyticsTable.getModel();
tm.setRowCount(0);
while(rs.next()){
int id = rs.getInt("stock.id");
int current = rs.getInt("stock.Quantity");
String name = rs.getString("stock.Name");
String price = rs.getString("stock.Price");
String query = "SELECT sum(Quantity) as 'sum' FROM `orders` WHERE Created_at >= DATE(CURRENT_DATE() -7)
and Stock_id ="+id;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/u843360242_tukule
useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","");
pst = con.prepareStatement(query);
rs=pst.executeQuery();
rs.next();
if(rs.getInt("sum") > 0)
{
ordered = rs.getInt("sum");
initial = current + ordered;
}
else{
ordered = 0;
initial = current + ordered;
}
Object o[]={
name,
price,
initial};
tm.addRow(o);
} catch (SQLException ex) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}
}
} catch (SQLException ex) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}
}