取回我自己的电影评级

时间:2014-11-28 00:35:51

标签: java mysql sql

基本上,我有一个名为rating的表,在mysql中有3列FILMEMAILRATING。 我可以取回所有电影的平均评分,但我必须显示评分 我还没有评价的电影,所以我只能展示除了我以外的其他所有电影。

String email = Main_Login.accounttext.getText().trim();
    statement = (PreparedStatement) con
            .prepareStatement(""
                    + "SELECT FILM,(film_total_ratings/number_of_ratings) as ratings_rating "
                    + "FROM( "
                    + "SELECT COUNT(*) as number_of_ratings, FILM, "
                    + "   SUM(RATING) as film_total_ratings "
                    + "   FROM  ratings GROUP BY film "
                    + "ORDER BY rating DESC"
                    + ") TMP_Film");
    result = (ResultSet) statement.executeQuery();

    int i = 0;
    while (result.next() && i <= 4) {

        i++;
    //  if (result.getString(1).contains(email)) {

            System.out.println((i) + ")" + " " + "[Movies You Might Like]"
                    + " " + result.getString(1) + "  " + "[Rating]" + " "
                    + result.getString(2));

1 个答案:

答案 0 :(得分:0)

您可以尝试使用CASE添加一列,表明相应email已对电影进行了评分。这没有经过测试,但你可能会得到这个概念:

statement = (PreparedStatement) con
            .prepareStatement(""
                    + "SELECT FILM,(film_total_ratings/number_of_ratings) as ratings_rating "
                    + "FROM( "
                    + "SELECT COUNT(*) as number_of_ratings, FILM, "
                    + "   SUM(RATING) as film_total_ratings, "
                    + "   SUM(CASE WHEN EMAIL LIKE '%"+email+"%' THEN 1 ELSE 0 END) as rated"
                    + "   FROM  ratings GROUP BY film HAVING rated=0 "
                    + "ORDER BY rating DESC"
                    + ") TMP_Film");