Minor MySQL improvements

This commit is contained in:
Robin Kupper
2011-11-30 18:13:19 +01:00
parent 1985c655c6
commit 2d3257f209

View File

@@ -111,9 +111,9 @@ public class QueryParams implements Cloneable
from += "LEFT JOIN `" + getTable() + "-chest` USING (id) "; from += "LEFT JOIN `" + getTable() + "-chest` USING (id) ";
return select + " " + from + getWhere() + "ORDER BY date " + order + ", id " + order + " " + getLimit(); return select + " " + from + getWhere() + "ORDER BY date " + order + ", id " + order + " " + getLimit();
} else if (sum == SummarizationMode.TYPES) } else if (sum == SummarizationMode.TYPES)
return "SELECT type, SUM(created) AS created, SUM(destroyed) AS destroyed FROM ((SELECT type, count(type) AS created, 0 AS destroyed FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) " + getWhere(BlockChangeType.CREATED) + "GROUP BY type) UNION (SELECT replaced AS type, 0 AS created, count(replaced) AS destroyed FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) " + getWhere(BlockChangeType.DESTROYED) + "GROUP BY replaced)) AS t GROUP BY type ORDER BY SUM(created) + SUM(destroyed) " + order + " " + getLimit(); return "SELECT type, SUM(created) AS created, SUM(destroyed) AS destroyed FROM ((SELECT type, count(*) AS created, 0 AS destroyed FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) " + getWhere(BlockChangeType.CREATED) + "GROUP BY type) UNION (SELECT replaced AS type, 0 AS created, count(*) AS destroyed FROM `" + getTable() + "` INNER JOIN `lb-players` USING (playerid) " + getWhere(BlockChangeType.DESTROYED) + "GROUP BY replaced)) AS t GROUP BY type ORDER BY SUM(created) + SUM(destroyed) " + order + " " + getLimit();
else else
return "SELECT playername, SUM(created) AS created, SUM(destroyed) AS destroyed FROM ((SELECT playerid, count(type) AS created, 0 AS destroyed FROM `" + getTable() + "` " + getWhere(BlockChangeType.CREATED) + "GROUP BY playerid) UNION (SELECT playerid, 0 AS created, count(replaced) AS destroyed FROM `" + getTable() + "` " + getWhere(BlockChangeType.DESTROYED) + "GROUP BY playerid)) AS t INNER JOIN `lb-players` USING (playerid) GROUP BY playerid ORDER BY SUM(created) + SUM(destroyed) " + order + " " + getLimit(); return "SELECT playername, SUM(created) AS created, SUM(destroyed) AS destroyed FROM ((SELECT playerid, count(*) AS created, 0 AS destroyed FROM `" + getTable() + "` " + getWhere(BlockChangeType.CREATED) + "GROUP BY playerid) UNION (SELECT playerid, 0 AS created, count(*) AS destroyed FROM `" + getTable() + "` " + getWhere(BlockChangeType.DESTROYED) + "GROUP BY playerid)) AS t INNER JOIN `lb-players` USING (playerid) GROUP BY playerid ORDER BY SUM(created) + SUM(destroyed) " + order + " " + getLimit();
} }
public String getTable() { public String getTable() {
@@ -200,7 +200,6 @@ public class QueryParams implements Cloneable
} }
break; break;
case BOTH: case BOTH:
where.append("type <> replaced AND ");
if (!types.isEmpty()) { if (!types.isEmpty()) {
where.append('('); where.append('(');
for (final int type : types) for (final int type : types)
@@ -208,9 +207,9 @@ public class QueryParams implements Cloneable
where.delete(where.length() - 4, where.length()); where.delete(where.length() - 4, where.length());
where.append(") AND "); where.append(") AND ");
} }
where.append("type != replaced AND ");
break; break;
case CREATED: case CREATED:
where.append("type <> replaced AND ");
if (!types.isEmpty()) { if (!types.isEmpty()) {
where.append('('); where.append('(');
for (final int type : types) for (final int type : types)
@@ -218,10 +217,10 @@ public class QueryParams implements Cloneable
where.delete(where.length() - 4, where.length()); where.delete(where.length() - 4, where.length());
where.append(") AND "); where.append(") AND ");
} else } else
where.append("type > 0 AND "); where.append("type != 0 AND ");
where.append("type != replaced AND ");
break; break;
case DESTROYED: case DESTROYED:
where.append("type <> replaced AND ");
if (!types.isEmpty()) { if (!types.isEmpty()) {
where.append('('); where.append('(');
for (final int type : types) for (final int type : types)
@@ -229,10 +228,11 @@ public class QueryParams implements Cloneable
where.delete(where.length() - 4, where.length()); where.delete(where.length() - 4, where.length());
where.append(") AND "); where.append(") AND ");
} else } else
where.append("replaced > 0 AND "); where.append("replaced != 0 AND ");
where.append("type != replaced AND ");
break; break;
case CHESTACCESS: case CHESTACCESS:
where.append("type = replaced AND (type = 23 OR type = 54 OR type = 61 OR type = 62) AND "); where.append("(type = 23 OR type = 54 OR type = 61 OR type = 62) AND type = replaced AND ");
if (!types.isEmpty()) { if (!types.isEmpty()) {
where.append('('); where.append('(');
for (final int type : types) for (final int type : types)