クエリを使ってビューを定義する

クエリを使ってビューを定義する

Forguncyのビュー機能を使用すると、複数のテーブルから必要なデータだけを抽出した仮想テーブルを作成し、保持しておくことができます。
ビューの作成にはSQLを使用します。Forguncyではリストビューなどを使用してノーコードでもデータを扱うことができますが、SQLを使ってこれまでのデータベース関連作業と同じように作業することも可能です。

見出しの装飾

Forguncyのビューの概要

ビューは、実体を持たない仮想テーブルです。

一つまたは複数のテーブルから任意のフィールドを指定して抽出や結合を行い、一つのテーブルのように見せることができます。データの抽出はリストビューでも可能ですが、ビューでは複数のテーブルを跨いで複雑な集計を行い、その値を保管しておくことが可能です。例えば、毎日の売り上げが蓄積されている実績管理テーブルから月ごとの売上を集計し、さらに顧客マスタから顧客情報を追加した月別売上実績ビューを作成する、というようなことが実現できます。

顧客マスタと実績管理テーブルから月別売上実績ビューを作成
▲ 顧客マスタと実績管理テーブルから月別売上実績ビューを作成

テーブルのデータを参照する方法については、リレーションの記事で紹介していますが、リレーションではテーブルの値をそのまま参照するためデータの集計はできません。

ビューはSQLを使って作成します。そのため関数や算術演算子によってデータを加工し、効率的に使用することができるようになります。ビューは一度作成しておけば複数のページ間で使用できるので、何度も同じ数式を書く必要もありません。

また、ビューはリストビューのデータソースとしても使用できます。 ForguncyではグラフなどのUI部品のデータソースとしてリストビュー上のデータを使用するため、ビューで集計したデータをそのままグラフで表現することが可能です。使いたいデータが一つのテーブルで完結する場合はリストビュー、他のテーブルを参照する必要があればリレーション設定、複雑な計算が必要な場合にはビューというように使い分けることがポイントです。

リストビューとビューの違い
▲ リストビューとビューの違い
見出しの装飾

ビューの作成方法

ビューの作成にはSQL文によるクエリが必要です。 Forguncyで使用できるSQL文は、SQLiteで使用できるSQL文となっています。

見出しの装飾

Forguncy Builderで新規作成

Forguncy Builderではビューを作成するためのエディターを提供しています。エディターに直接SQLを打ち込み、ビューの名前をつければForguncy内に新規のビューが保存されます。エディター上にはテーブルや作成済みの他のビューが表示されています。集計関数などを使用して新規にフィールドを作成することもできますが、型を特定できないためテキスト型として扱われることに注意してください。その他ビューについての詳細は、ヘルプを参照してください。

見出しの装飾

Forguncyの組み込み項目の使用

ForguncyでSQLを作成する場合、テーブルや既存のビューに存在する項目の他にForguncyが提供している組み込み項目を使用することができます。IDや作成者、最終更新日時やデータなどの情報はこの組み込み項目から取得可能です。対応している項目の詳細や使い方については、ヘルプを参照してください。

見出しの装飾

主キーの設定

Forguncyで作成されたビューは、主キーの設定がされていない状態です。そのため、作成後に主キーを設定する必要があります。主キーの設定は、設定ウィンドウから任意の項目を選択するだけで完了します。複数の主キーを指定して複合キーにすることもノーコードで簡単に行えます。

見出しの装飾

外部データベースのテーブルからビューを作る

ここまでの内容はForguncyの内部テーブルまたはForguncy内部にある既存のビューから新規ビューを定義する想定で解説を行いました。Forguncyでは内部テーブルだけでなく外部データベースとの接続も可能ですが、外部データベースのテーブルからビューを作成するにはコピーテーブルを準備する必要があります。コピーテーブルは外部データベースに存在するテーブルやビューのコピーをForguncy内部に作成したものです。コピーテーブルを使用すれば、異なるデータベース上に存在するテーブルやビューをForguncy上で結合・集計できるようになります。Forguncyにおける外部テーブルの利用については以下の記事でも詳しく解説しています。

見出しの装飾

Forguncyをもっとよく知る

各業種や用途別にForguncyを活用して、成功した事例や使い方をご紹介します。