gpt4 book ai didi

java - 如何在JAVA中查询具有相似数据的两个表并按表字段对结果进行分组?

转载 作者:行者123 更新时间:2023-11-30 05:41:19 25 4
gpt4 key购买 nike

我正在尝试在某个系统中执行分析。系统应该通过从数据库中查询两个或多个表来进行分析,然后按字段分组显示总结果。

这是一个基于 Java 的系统,使用 SQL 作为数据库。我尝试过使用 UNION、UNION ALL 但它没有给出令人满意的结果。

下面是表1

id    itemID     ItemName     entryTime
1 GAR001 PhoneAG ""
2 GAR004 PCLG ""
3 GAR009 ELECT ""
...

下面是表2

id    itemID     ItemName     entryTime    issuedate
1 GAR001 PhoneAG "" ""
2 GAR001 PhoneAG "" ""
3 GAR009 ELECT "" ""
...

我尝试过使用以下内容


public ObservableList<PieChart.Data> getItemAnalysis(){
ObservableList<PieChart.Data> data = FXCollections.observableArrayList();

String st1 = "SELECT itemID, COUNT(itemID) FROM table1 GROUP BY itemID UNION ALL SELECT itemID, COUNT(itemID) FROM table2 GROUP BY itemID";
System.out.println(st1);
ResultSet rs = execQuery(st1);
try{

if(rs.next()){
String itemId = rs.getString("itemID");
int count = rs.getInt(2);

data.add(new PieChart.Data(itemId + "(" + count + ")", count));


}
} catch (SQLException ex) {
Logger.getLogger(DatabaseHandler.class.getName()).log(Level.SEVERE, null, ex);
}
return data;

}

返回结果时。它返回

GAR001(1),
GAR004(1),
GAR009(1),
GAR001(2),
GAR009(1).

我期望结果返回为

GAR001(3)
GAR004(1)
GAR009(2)

最佳答案

您正在两个分组查询之间应用union all。相反,您应该联合所有原始数据,然后对其进行分组:

SELECT   itemID, COUNT(*)
FROM (SELECT itemID
FROM table1
UNION ALL
SELECT itemID
FROM table2) t
GROUP BY itemID

关于java - 如何在JAVA中查询具有相似数据的两个表并按表字段对结果进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55578492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com