0

結果の数学関数を乗算するためのビューを作成する必要があります。これは可能ですか?

テーブル:

mysql> show create table devices \G
Create Table: CREATE TABLE `devices` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `d_type` varchar(255) NOT NULL,
  `multiplier` char(255) NOT NULL DEFAULT '',
  `value` decimal(10,3) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

サンプル行:

mysql> SELECT devices.id, devices.d_type, devices.multiplier, devices.`value`  FROM devices;   
+----+--------------------------+------------+--------+
| id | d_type                   | multiplier | value  |
+----+--------------------------+------------+--------+
|  1 | Cisco Call Manager       | /          |  4.000 |
|  2 | Generic Router/Switch    | *          |  0.350 |

さまざまな数学の結果を提供するために、乗数を使用して何らかの方法で計算する必要があります。例(もちろん動作しません):

SELECT devices.id, devices.d_type, devices.multiplier, devices.`value`, (SELECT 1 $multiplier devices.`value`) as EPS FROM devices; 

この場合の結果は次のようになります。

+----+--------------------------+------------+--------+--------+
| id | d_type                   | multiplier | value  |   EPS  |
+----+--------------------------+------------+--------+--------+
|  1 | Cisco Call Manager       | /          |  4.000 |  0.25  |
|  2 | Generic Router/Switch    | *          |  0.350 |  0.35  |

値の列で 1 を除算または乗算して、EPS 列を導出する必要があります。除算するか乗算するかの決定としてその乗数を使用する方法はありますか?

(例として 1 を使用したことに注意してください。これは、ユーザー入力からの任意の受信整数である可能性があります)

4

2 に答える 2

1

このクエリを使用できます

SELECT devices.id, devices.d_type, devices.multiplier, devices.`value`, IF(multiplier = '/', 1/value, 1*value) as EPS FROM devices;

それはあなたのために働きます。

于 2012-08-16T04:29:36.833 に答える
0
IF(multiplier = '/', 1/value, value) AS EPS
于 2012-08-16T04:25:58.660 に答える