public LinkedList<Review> getOtherReviews(String reviewer, String isbn) throws SQLException {
        LinkedList<String> select = new LinkedList<String>();
        select.add("*");
        LinkedList<String> from = new LinkedList<String>();
        from.add("Reviews");
        LinkedList<Pair<String, String>> whereClauses = new LinkedList<Pair<String, String>>();
        whereClauses.add(new Pair<String, String>("Reviewer<>?", username));
        if (!reviewer.isEmpty()) {
            whereClauses.add(new Pair<String, String>("Reviewer=?", reviewer));
        }
        if (!isbn.isEmpty()) {
            whereClauses.add(new Pair<String, String>("ISBN=?", isbn));
        }
        LinkedList<String> whereConjunctions = new LinkedList<String>();
        if (whereClauses.size() == 2) {
            whereConjunctions.add("AND");
        }
        Pair<String, LinkedList<String>> orderBy = new Pair<String, LinkedList<String>>("(SELECT AVG(SCORE) " +
                "FROM Usefulness WHERE Usefulness.Reviewer = Reviews.Reviewer AND Usefulness.ISBN = Reviews.ISBN)",
                new LinkedList<String>());
        String orderDirection = "DESC";
        ResultSet resultSet =
                executeDynamicQuery(select, from, whereClauses, whereConjunctions, orderBy, orderDirection, 0);
        LinkedList<Review> result = new LinkedList<Review>();
        while (resultSet.next()) {
            result.add(new Review(resultSet.getString(1), resultSet.getString(2), resultSet.getInt(3),
                    resultSet.getDate(4), resultSet.getString(5)));
        }

        return result;
    }