PHP+SQLite:カラムの演算

(1/1)
SQL では、カラムに対して演算を行うことができる。四則演算や論理演算はもちろん、一部の数学関数も用意されている。

サンプル・プログラム

このプログラムは、1580 年時点の満年齢を一覧表示するプログラムである。

解説:算術演算

SELECT 文の直後にはカラム名を書くと説明したが、演算結果を指定することもできる。
1560 年時点の満年齢を計算し、その結果を取得するには下記のような SQL 文になる。

SELECT *,(1580-birth) AS age FROM chronologic WHERE 1;


ここでは、演算結果を取り出しやすいように、(1580-birth)の計算結果を age という仮想カラムに割り当てた。AS句を使うことで、演算結果を仮想的なカラム名に割り当てることができる。

0025: //実行するSQL
0026: define('SQL', 'SELECT *,(1580-birth) AS age FROM chronologic WHERE 1 ORDER BY birth;');

サンプル・プログラム

上述のサンプル・プログラムでは、1580 年時点で死亡している者や、まだ産まれていない者も計算、表示してしまった。そこで、1580 年時点で生存している者の満年齢を一覧表示するプログラムを作ってみた。

解説:算術演算と条件式

算術演算と WHERE 条件式を組み合わせることによって目的は達成できる。

SELECT *,(1580-birth) AS age FROM chronologic WHERE (birth <= 1580) and (death > 1580);


(1580-birth)の結果を仮想カラム age に代入することは同じだが、WHERE 句に "(birth <= 1580) and (death > 1580)" を記述することで、「生年が 1580 以下」かつ「没年が 1580 を超える」という条件で絞り込む。

0025: //実行するSQL
0026: define('SQL', 'SELECT *,(1580-birth) AS age FROM chronologic WHERE (birth <= 1580) and (death > 1580) ORDER BY birth;');

サンプル・プログラム:カラム同士の演算

このプログラムは、死亡時の満年齢を一覧表示するプログラムである。

解説:カラム同士の演算

SQL ではカラム同士の演算を行うこともできる。

SELECT *, (death - birth) AS age FROM chronologic WHERE 1 ORDER BY age DESC;


死亡時の満年齢――つまり、カラム death からカラム birth を減じた値を仮想カラム age に代入する。
同時に、ORDER BY 句を使い、長寿の順(死亡時の満年齢が大きい順、昇順)に並べ替えを行う。

0025: //実行するSQL
0026: define('SQL', 'SELECT *, (death - birth) AS age FROM chronologic WHERE 1 ORDER BY age DESC;');
0027: 

(この項おわり)
header