2015-08-31 5 views
1

Я использую этот запрос, чтобы вытащить самую высокую встречу с самой высокой главы пользователь достиг:Почему я не получаю никаких данных с помощью этих запросов HQL?

SELECT COUNT(hc.s) as users, highest_chapter, highest_encounter 
FROM 
(
    SELECT s, MAX(l) as highest_chapter 
    FROM appl9_evt 
    WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start" 
    GROUP BY s 
    ORDER BY highest_chapter 
) hc 
INNER JOIN 
(
    SELECT s, l, MAX(get_json_object(json_data, '$.CurrentEncounter')) as highest_encounter 
    FROM appl9_evt 
    WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start" 
    GROUP BY s, l 
    ORDER BY highest_encounter 
) he ON hc.s = he.s AND hc.highest_chapter = he.l 
GROUP BY highest_chapter, highest_encounter 

Затем я сохранить его в виде таблицы и попытаться получить только версию 2.2.1 (или любой другой вариант, а сам -join Я думаю, что это называется) с этим:

SELECT COUNT(DISTINCT highest.s) as users, highest_chapter, highest_encounter FROM 
(
    SELECT users as s, highest_chapter, highest_encounter 
    FROM augusers221 
) highest 
INNER JOIN 
(
    SELECT s 
    FROM appl9_cpu 
    WHERE v_maj = '2.2.1' 
) ver ON highest.s = ver.s 
GROUP BY highest_chapter, highest_encounter 
ORDER BY highest_chapter, highest_encounter 

Но есть что-то не так с этой второй стадии, потому что я не могу вытащить все данные ... Спасибо заранее за глядя на эту стену текста.

ответ

0

Я не могу быть уверен, что без данных образца, а имена столбцов недружелюбны. Но, похоже, в столбце s содержится имя пользователя или идентификатор. Это правильно?

Если да, то вы не можете присоединиться к столбцу augusers221.users, потому что это количество пользователей.

Вы можете присоединиться к таблице appl9_cpu в первом запросе, и я думаю, вам нужно, потому что вы уже потеряли имена пользователей/идентификаторы к моменту второго запроса.

SELECT COUNT(hc.s) as users, highest_chapter, highest_encounter 
FROM 
(
    SELECT s, MAX(l) as highest_chapter 
    FROM appl9_evt 
    WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start" 
    GROUP BY s 
    ORDER BY highest_chapter 
) hc 
INNER JOIN 
(
    SELECT s, l, MAX(get_json_object(json_data, '$.CurrentEncounter')) as highest_encounter 
    FROM appl9_evt 
    WHERE month = "201508" AND st1 = "player" AND st2 = "level_progression" AND n = "level_start" 
    GROUP BY s, l 
    ORDER BY highest_encounter 
) he ON hc.s = he.s AND hc.highest_chapter = he.l 
INNER JOIN appl9_cpu cpu ON cpu.s = hc.s 
WHERE cpu.v_maj = '2.2.1' 
GROUP BY highest_chapter, highest_encounter 

Если это не поможет, то, возможно, вы можете разместить некоторые данные образца.

+0

Отлично, спасибо! Оно работает. Как мне теперь найти это только для DISTINCT (пользователей)? где я бы добавил DISTINCT? Я не могу использовать его вместе с GROUP BY, это правильно? – Janalyst

+0

Вы уже группируете 's' в первом подзапросе' hc', где вы получаете самые высокие главы. Таким образом, это должно быть хорошо, как есть. – davmos

+0

О, хорошо. Огромное спасибо!!! – Janalyst

0

Из того, что я могу видеть, используя эту скрипку: http://sqlfiddle.com/#!9/1026d/3 проблема вызвана использованием SELECT COUNT(hc.s) as users,, когда вы позже присоединиться, что s в ON highest.s = ver.s. Итак, вы присоединяете счет к фактической стоимости.

Если вы изменили имена столбцов, чтобы они были более явными, проблема может быть более четкой.

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

  • Нет связанных вопросов^_^