3 回答
TA贡献1877条经验 获得超1个赞
您正在两个分组查询之间应用 。相反,您应该使用原始数据,然后对其进行分组:union allunion all
SELECT itemID, COUNT(*)
FROM (SELECT itemID
FROM table1
UNION ALL
SELECT itemID
FROM table2) t
GROUP BY itemID
TA贡献1946条经验 获得超4个赞
您实际上需要编辑SQL语句,这就是您获得这些结果的原因。@Mureinik发布了正确的 SQL。我继续将其插入到您的代码中,以便为您提供一个应该有效的解决方案。
public ObservableList<PieChart.Data> getItemAnalysis(){
ObservableList<PieChart.Data> data = FXCollections.observableArrayList();
sql = "SELECT itemID, COUNT(*) FROM (SELECT itemID FROM table1 UNION ALL SELECT itemID FROM table2) t GROUP BY itemID"
System.out.println(sql);
ResultSet rs = execQuery(sql);
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;
}
TA贡献1921条经验 获得超9个赞
您应该使用子查询
SELECT DISTINCT itemID , COUNT(*) AS COUNT
FROM (SELECT itemID
FROM table1
UNION ALL
SELECT itemID
FROM table2) as T
GROUP BY itemID;
添加回答
举报