2014-12-02 2 views
0

Я получаю всевозможные ошибки с этой хранимой процедурой, от неопределенных имен столбцов до неоднозначных имен полей.Имя столбца хранимой процедуры MySQL Присоединиться к синтаксису

Что я пытаюсь сделать, это выбрать каждый идентификатор абонента, где действие, общий ресурс, тест, вирус и общая сумма находятся на самом высоком значении. Идентификатор абонента может отличаться для каждого наивысшего значения, поэтому вы можете вернуть до 5 идентификаторов абонента. Может быть, моя логика отключена здесь, но ниже мой код (Обратите внимание, что это только для столбца «действия»):

SELECT `set1.subscriber_id`, `set1.action`, `set1.share`, `set1.test`, `set1.viral`, (`set1.action` + `set1.share` + `set1.test` + `set1.viral`) AS "total", `abuse_flag` 

    FROM `subscribers_points` set1 

    JOIN 
     (
     SELECT `subscriber_id`, MAX(`action`) AS actionMax 
     FROM `subscribers_points` 
     WHERE `year` = _year 
     AND `month` = _month 
     GROUP BY `subscriber_id` 
     ) groupedAction 

    ON set1.subscriber_id=groupedAction.subscriber_id 

    WHERE `year` = _year 

    AND `month` = _month; 

^Это привело к «Неизвестному колонку„set1.subscriber_id“в„списке поля“

Это выглядит правильно для меня. Я не знаю, что вызывает ошибку.

ответ

0

попробовать это ... без большинства кавычки ... Вам нужно только кавычка, чтобы избежать зарезервированные слов и т.д.

SELECT set1.subscriber_id, set1.action, set1.share, set1.test, set1.viral, 
(set1.action + set1.share + set1.test + set1.viral) AS "total", abuse_flag 
FROM subscribers_points set1 
JOIN (
    SELECT subscriber_id, MAX(`action`) AS actionMax 
    FROM subscribers_points 
    WHERE year = _year 
    AND month = _month 
    GROUP BY subscriber_id 
    ) as groupedAction 
ON set1.subscriber_id=groupedAction.subscriber_id 
WHERE year = _year 
AND month = _month; 
+0

Спасибо, предыдущий кодер любил использовать чрезмерное количество backticks, я просто пытался воспроизвести этот метод. – wUmpage

0

Используйте «как» перед группировкой.

SELECT `set1.subscriber_id`, `set1.action`, `set1.share`, `set1.test`, `set1.viral`, (`set1.action` + `set1.share` + `set1.test` + `set1.viral`) AS "total", `abuse_flag` 

    FROM `subscribers_points` set1 

    JOIN 
     (
     SELECT `subscriber_id`, MAX(`action`) AS actionMax 
     FROM `subscribers_points` 
     WHERE `year` = _year 
     AND `month` = _month 
     GROUP BY `subscriber_id` 
     ) as groupedAction 

    ON set1.subscriber_id=groupedAction.subscriber_id 

    WHERE `year` = _year 

    AND `month` = _month; 
Смежные вопросы