Деление в MySQL

2People

Guest
Деление в MySQL

Здравствуйте!
Надо поделить одно поле в MySQL на число, которое зависит от значения в другом поле, как это сделать в запросе к MySQL?

-----------------------
| field_A | field_B |
-----------------------
| 34,343 | 4 |
| 84,353 | 1 |
| 29,678 | 1 |
| 49,765 | 3 |
| 94,098 | 2 |
| 23,357 | 2 |
-----------------------

В field_B числа от 1 до 7

Есле в поле field_B написано 1 то field_A делить на 13
Есле в поле field_B написано 2 то field_A делить на 7
Есле в поле field_B написано 3 то field_A делить на 8
Есле в поле field_B написано 4 то field_A делить на 2
и тд........

Там достаточно много записей, и не хочется делать несколько запросов в while(). Как сделать 1 (для всех) или 7 (по одному для каждого значения в поле field_B) запроы.

И можно ли какнибудь результат округлять до 6 знака после запятой?
 

Demiurg

Guest
>Есле в поле field_B написано 1 то field_A делить на 13
>Есле в поле field_B написано 2 то field_A делить на 7
>Есле в поле field_B написано 3 то field_A делить на 8
>Есле в поле field_B написано 4 то field_A делить на 2
>и тд........
а составить функцию f(field_b) ?
 

Апельсин

Оранжевое создание
> Надо поделить одно поле в MySQL на число, которое зависит от значения в другом поле, как это сделать в запросе к MySQL?

case when ..
http://www.mysql.com/doc/en/Control_flow_functions.html

> И можно ли какнибудь результат округлять до 6 знака после запятой?

format()
http://www.mysql.com/doc/en/Miscellaneous_functions.html
 

2People

Guest
Так?
UPDATE usee SET field_B=FORMAT(field_B/13, 6) WHERE field_A=1
 

2People

Guest
может кому пригодится, получилось такое, при условии, что поле double(8,6)
UPDATE usee SET field_B=CASE field_A WHEN 1 THEN (field_B/5) WHEN 2 THEN (field_B/3) WHEN 3 THEN (field_B/2.5) WHEN 4 THEN (field_B/2.14) WHEN 5 THEN (field_B/1.8) WHEN 6 THEN (field_B/1.5) WHEN 7 THEN (field_B/1.2) END

а format() не подходит, тк он приводит число к виду #,###,###.##
 
Сверху