2013-02-28 2 views
0

Я пытаюсь вычислить расстояние от моей точки центра тяжести, которое рассчитывается через общее количество тегов и сумму моментального появления тегов. Итак, это концепция (tc_sum/cnt).
Однако SELECT в подзапросе не позволяет мне получить точку центроида, потому что «centr» еще не рассчитан, и поэтому я не могу получить «расстояние».
Любая помощь?MySQL получить значение подзаголовка

SELECT cnt, tc_sum, ROUND(tc_sum/cnt) as centr, distance 
FROM (
    SELECT SUM(timecode) as tc_sum, count(timecode) as cnt, ABS(centr - '".$timecode."') AS distance 
    FROM dados d 
    WHERE tag = 'donald' 
    AND filename = 'donald.mp4' 
    AND group_id = '1' 
    ) d 
+0

Какой результат вы получаете? – DevelopmentIsMyPassion

+0

Код ошибки: 1054. Неизвестный столбец 'centr' в 'списке полей' – zppinto

+0

Вы не можете использовать centr, как это. попробуйте скопировать «ROUND (tc_sum/cnt)» во втором запросе вместо «centr» – DevelopmentIsMyPassion

ответ

1
SELECT 
SUM(timecode) as tc_sum, 
SUM(timecode) as cnt, 
ABS(SUM(timecode)/SUM(timecode) - '".$timecode."') AS distance, 
ROUND(SUM(timecode)/SUM(timecode)) AS centr 
FROM dados d 
WHERE tag = 'donald' 
AND filename = 'donald.mp4' 
AND group_id = '1' 

Запрос работает на строке после строки, и вы не можете ссылаться на псевдонимы таким образом. Вам придется «пересчитать» их снова. «Пересчитать» не является правильным словом, так как результат на самом деле не вычисляется несколько раз. Оптимизатор позаботится о том, чтобы он вычислялся только один раз. Но псевдоним известен только после запуска запроса. Я боюсь, что мой английский слишком засасывает, чтобы объяснить это в хорошем смысле :)

+0

Отчасти это работает, но я потерял концепцию вычисления точки центра тяжести! – zppinto

+0

@zppinto, что вы подразумеваете под этим? – DevelopmentIsMyPassion

+0

@zppinto Да, что вы имеете в виду? – fancyPants

1

Попробуйте

SELECT cnt, tc_sum, ROUND(tc_sum/cnt) as centr, distance 
FROM (
SELECT SUM(timecode) as tc_sum, count(timecode) as cnt, ABS(ROUND(tc_sum/cnt)- '".$timecode."') AS distance 
FROM dados d 
WHERE tag = 'donald' 
AND filename = 'donald.mp4' 
AND group_id = '1' 
) d 
+0

Не работает! Tc_sum еще не рассчитан ... – zppinto

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