2014-02-01 2 views
0

Я пытаюсь вычислить некоторые цифры и я поклялся Alltime, потому что это удается, и тогда я судимое это:MySQL - Неверное значение

SELECT SUM(10 *1) 
FROM user_achievements 
INNER JOIN achievements 
WHERE user_achievements.user_id =8 

и говорит, что его: 420?!?

Я пытаюсь сделать эту работу:

SELECT SUM((SELECT score_base FROM achievements WHERE id = user_achievements.achievement_id)*((SELECT pixels_multiplier FROM achievements WHERE id = user_achievements.achievement_id)) * achievement_level) * achievement_level FROM user_achievements INNER JOIN achievements WHERE user_achievements.user_id=2 

достижения: Идентификация, уровней, pixels_base, score_base, pixels_multiplier

user_achievements: user_id, achievement_id, achievement_level

+0

Можете ли вы показать операторы create для двух таблиц. Вы можете оставить все поля, которые не используются. – krowe

+0

Добавлено! Надеюсь, это поможет :) – user3249998

ответ

2

Если вы ur query is return 420, это означает, что в результирующем наборе перед агрегацией возвращаются 42 строки.

Это ваш запрос:

SELECT sum(10*1) 
FROM user_achievements ua cross join 
    achievements a 
WHERE ua.user_id = 8; 

Если бы я должен был догадаться, вам не хватает объединения:

SELECT sum(10*1) 
FROM user_achievements ua join 
    achievements a 
    on ua.achievement_id = a.id 
WHERE ua.user_id = 8; 

EDIT:

Это запрос в комментарии:

SELECT sum((SELECT score_base 
      FROM achievements 
      WHERE id = ua.achievement_id 
      ) * 
      (SELECT pixels_multiplier 
      FROM achievements 
      WHERE id = ua.achievement_id 
      ) 
      ) 
FROM user_achievements ua join 
    achievements a 
    on ua.achievement_id = a.id 
WHERE ua.user_id = 2; 

Должно быть, t даже разобрать. Подзапросы не допускаются в агрегатах. Попробуйте следующее:

SELECT sum(a.score_base * a.pixels_multiplier) 
FROM user_achievements ua join 
    achievements a 
    on ua.achievement_id = a.id 
WHERE ua.user_id = 2; 
+0

# 1054 - Неизвестный столбец 'a.achievement_id' в 'on clause' – user3249998

+0

Просто измените a на ua и ua на a в сравнении – krowe

+0

@ user3249998. , , Я не знаю названия полей в вашей таблице. Я показывал пример того, как будет выглядеть запрос. Используйте его как руководство, учитывая вашу собственную базу данных. –

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