2015-05-12 4 views
1

У меня есть 2 колонки, которые я хочу, чтобы умножить «скорость» и «расстояние» точек для каждого множества Тэй стоять
Вычислить два значения систематических из одного столбца в precedure (MySQL)

Стол:

--- тип --- | --- баллы ---
.... скорость .... | ....... 25 ........
.... утиль ....... | ......... 1 ........
..distance .. | ...... 120 ........
.... скорость. ... | ....... 19 ........
.... утиль ....... | ......... 1 ..... ...
..distance .. | ...... 102 ........
.... скорость .... | ....... 15 .... ....
.... утиль ....... | ......... 1 ........
..distance .. | ..... ..99 ........
...

скорость (25) * расстояние (120) сохранение значения
скорости (19) * расстояние (102) сохранения значения
скорость (15) * расстояние (99) сохранение значения

И в конце концов получить сумма (стоимость)

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

SET value = (SELECT SUM(t.v) 
      FROM(
       ((SELECT (points) s FROM UserData WHERE type = 'speed') 
       * 
       (SELECT (points) d FROM UserData WHERE type = 'distance')) 
       v 
      ) t); 
+0

Можете ли вы предоставить полную структуру стола? С какими средствами связана скорость и расстояние? Предполагая, что вы говорите это как «установленный», вы имеете в виду 1-й и 2-й строки, затем 3-й и 4-й строки, и так далее ...? –

+0

Да, вот что я имел в виду. Реальная таблица имеет некоторую базовую структуру. – user3800924

ответ

2

Как вы сказали, «его так неправильно ", но при условии, что данные являются reliab в порядке, который вы показали, это может сработать ...

SET @i := 0; 
SET @part := 0; 
SET @running := 0; 

SELECT IF(@i=0, @part := `points`, @part := @part * `points`) AS `current_partial` 
    , IF(@i=1, @running := @running + @part , @running) AS `incremental_running` 
    , @i := IF(@i=1,0,1) AS `stage` 
FROM some_ridiculous_table 
; 

SELECT @running; 
Смежные вопросы