Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将具有重复属性的元组组合成一个元组?_Java_Mysql_Sql_Arraylist_Jdbc - Fatal编程技术网

Java 如何将具有重复属性的元组组合成一个元组?

Java 如何将具有重复属性的元组组合成一个元组?,java,mysql,sql,arraylist,jdbc,Java,Mysql,Sql,Arraylist,Jdbc,我创建了一个与SQL数据库中的表同名的java类,并使用从该表检索到的信息从该java类中创建了多个对象,并将它们存储在ArrayList中 CREATE TABLE `orderdetails` ( `orderNumber` int(11) NOT NULL, `productCode` varchar(15) NOT NULL, `quantityOrdered` int(11) NOT NULL, `priceEach` decimal(10,2) NOT NULL,

我创建了一个与SQL数据库中的表同名的java类,并使用从该表检索到的信息从该java类中创建了多个对象,并将它们存储在ArrayList中

CREATE TABLE `orderdetails` (
  `orderNumber` int(11) NOT NULL,
  `productCode` varchar(15) NOT NULL,
  `quantityOrdered` int(11) NOT NULL,
  `priceEach` decimal(10,2) NOT NULL,
  `orderLineNumber` smallint(6) NOT NULL,
  PRIMARY KEY (`orderNumber`,`productCode`),
  KEY `productCode` (`productCode`),
  CONSTRAINT `orderdetails_ibfk_1` FOREIGN KEY (`orderNumber`) REFERENCES `orders` (`orderNumber`),
  CONSTRAINT `orderdetails_ibfk_2` FOREIGN KEY (`productCode`) REFERENCES `products` (`productCode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

元组具有重复的顺序号,例如:

(10100,'S18_1749',30,'136.00',3),

(10100,'S18_2248',50,'55.09',2),

(10100,'S18_4409',22,'75.46',4),

然后将每个元组转换为与表同名的类的java对象,并存储在Arraylist中

public ArrayList<OrderDetails> getOrders(String tableName) throws SQLException{
        ArrayList<OrderDetails>od=new ArrayList<OrderDetails>();

        try {
            String query="SELECT * FROM "+tableName;
            Statement s= con.createStatement();
            ResultSet rs= s.executeQuery(query);

            while(rs.next()) {

                int orderNumber=rs.getInt("orderNumber");
                String productCode=rs.getString("productCode");
                int quantityOrdered=rs.getInt("quantityOrdered");
                double priceEach=rs.getDouble("priceEach");
                int orderLineNumber=rs.getInt("orderLineNumber");

                OrderDetails temp=new OrderDetails(orderNumber, productCode, quantityOrdered, priceEach, orderLineNumber);
                od.add(temp);

            }

        }
        catch(SQLException e) {

            System.out.println("SQL exception happened while retriving data, close connection");

            throw new RuntimeException(e);  
        }
        return od;
    }
简而言之,有没有一种方法可以将具有重复属性的对象组合成一个? 如果我的问题看起来很模糊,而你又不知道到底是什么问题,我向你道歉。
如果您试图联系我并要求进一步澄清,我们将不胜感激。有时很难描述一个过于具体的问题。

为什么不直接在数据库中进行计算?与Java中的迭代循环相比,SQL是一种基于集合的语言,在这种类型的操作中非常有效

考虑以下聚合查询:

select orderNumber, sum(quantityOrdered * priceEach) totalValue
from mytable
group by orderNumber

这将为每个订单提供一条记录,所有对应行的总值。

这听起来是个好主意!但是因为这门课程是为了让我练习动态Java编程,我恐怕不能使用复杂的SQL语句。。。。不过谢谢你的建议!
CheckNumber 10100, total value: 8494.62 (if you add up the product between priceEach and quantityOrdered for the three tuples shown above earlier in my question is the rsult)
select orderNumber, sum(quantityOrdered * priceEach) totalValue
from mytable
group by orderNumber