2014-11-28 4 views
0

В принципе, у меня есть таблица под названием рейтинги с 3 столбцами FILM, EMAIL и RATING в mysql. Я могу получить средний рейтинг для всех фильмов, но затем я должен показать рейтинги фильмов, которые я еще не оценил, поэтому я должен показывать только фильмы, все остальные оценили, кроме меня.Получение рейтингов фильмов, за исключением моих собственных

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)); 

ответ

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"); 
+0

«THEN 1 ELSE 0 END) в качестве номинального ОТ оценки GROUP BY пленка, имеющая рейтинг = 0ORDER BY» в строке 1 ошибка – user3136938

+0

вам нужно пространство перед заказом по, как Это сейчас? –

+0

Ошибка синтаксиса – user3136938

Смежные вопросы