I've been trying to get 4 or more COUNT(*) queries from different tables into one query.
Is this even possible or do I have to make four different queries?
This is my code:
try (final PreparedStatement sel = conn.prepareStatement("SELECT COUNT(*), SUM(coins) FROM User");
final PreparedStatement sel2 = conn.prepareStatement("SELECT COUNT(*) FROM Friends");
final PreparedStatement sel3 = conn.prepareStatement("SELECT COUNT(*) FROM Clans");
final PreparedStatement sel4 = conn.prepareStatement("SELECT COUNT(*) FROM ClanMembers")) {
try (final ResultSet rs = sel.executeQuery(); final ResultSet rs2 = sel2.executeQuery(); final ResultSet rs3 = sel3.executeQuery()) {
rs.last();
rs2.last();
rs3.last();
return new Object[] { rs.getInt(1), rs.getInt(2), rs2.getInt(1) / 2, rs3.getInt(1) };
}
}
UNION ALLis the simplest solution to me but you have one query with 2 column ... so this will not work. so using sub-queries is one solution. FYI : You could use aStatementif you don't pass any parameter.