SQLテーブル
Collection: SQLCommunity Edition+概要
SQLクエリを記述して SQLテーブルを作成します。データベースに実際のデータベーステーブルを作成するのではなく、SQLクエリの結果を読み込み、その結果をテーブル、詳細、チャート、ワークフローで利用できるようにします。集計データや統計レポートなどに適しています。
SQLテーブルは SELECT ステートメントまたは WITH ... SELECT ステートメントのみをサポートしています。データの照会と表示のみをサポートし、データの追加、編集、削除はサポートしていま せん。
SQLテーブルの作成
- システム機能のデータソースメニューをクリックし、データソースのホームページにアクセスします。
- データソース一覧で Main データソースを選択し、「Configure」操作をクリックして、メインデータベースにアクセスします。
- メインデータベースの管理画面で「Create collection」をクリックし、「SQL collection」を選択します。

SQLクエリの記述
SQLクエリを入力し、「Execute」をクリックしてクエリを実行し、返されたフィールドとソースデータテーブルの解析を試みます。 「Execute」はプレビューとフィールド解析の実行にのみ使用 します。SQLクエリが使用可能であることを確認したら、「Confirm」をクリックしてください。フォームからこのSQLを確認済みのクエリとして送信できるようになります。

Source collections は、SQLクエリから推測されたソースデータテーブルです。クエリ結果のフィールドが主にどの既存データテーブルに由来するかを識別し、フィールドマッピングで選択可能な Field source を絞り込みます。
推測結果は、設定をすばやく行うための補助情報です。SQLクエリに別名、サブクエリ、計算フィールド、集計関数、複雑なjoinが含まれている場合、結果が完全に正確でない、または推測できないことがあります。その場合は Source collections を手動で指定できます。
フィールドマッピング
フィールドマッピングは、SQLテーブルの作成後に必ず確認する設定です。SQLクエリの結果からNocoBaseが把握できるのは、どの列が返されたかだけです。これらの列を通常のフィールドと同じように画面で使用するには、Field source を確認するか、Field interface とフィールド表示名を設定する必要があります。
フィールド設定の詳細

たとえば、SQLクエリで customers.name as customer_name が返され、それが顧客テーブルの「顧客名」フィールドに由来する場合、顧客テーブルの対応するフィールドにマッピングできます。これにより、NocoBaseは元のフィールドのタイトルと画面設定を引き継ぐことができます。
フィールドが計算結果(たとえば count(*) as total、sum(amount) as amount_total)に由来する場合、通常は明確なソースフィールドがないため、適切なField interfaceを手動で選択する必要があります。
Field source は Source collections に依存します。先にソースデータテーブルを選択して初めて、フィールドマッピング表にそのデータテーブルで選択可能なソースフィールドが表示されます。
フィールド推測で Field source がある場合、NocoBaseはソースフィールドのField interfaceを優先的に再利用します。ソースフィールドを推測できない場合は、Field source を手動で指定できます。推測結果が業務上の意味に合わない場合は、Field source を削除し、Field source を手動で指定するか、Field interface を手動で選択して Field display name を設定できます。
レコードの一意識別子
SQLテーブルにはRecord unique keyを設定する必要があります。設定しないと、ページ上でブロックを作成できず、レコードを正しく表示できません。1つのフィールド、または複数のフィールドの組み合わせを一意識別子として選択できます。Record unique keyに適したフィールドは、通常、次の条件を満たします。
- クエリ結果の各行が一意である
- ページネーション、並べ替え、集計条件が変わっても値が変わらず安定している
- 値が空でない
- クエリ結果に常に返される
クエリ結果が単一テーブルに由来する場合は、元のテーブルの主キーを優先的に返すことをおすすめします。複数テーブルのjoinや集計に由来する場合は、SQL内で安定した業務IDを保持するか、組み合わせによってレコードを特定できる複数のフィールドを返します。
並べ替え、フィルター、集計範囲によって変化する row_number() のような値を、長期的に安定したRecord unique keyとして使用しないでください。レコードの一意識別子が変わると、ページブロック、権限、ワークフロー、外部APIで同じレコードを特定できなくなる可能性があります。
クエリ結果のプレビュー
送信前にPreviewを使用してSQLクエリ結果を確認します。プレビューでは、次の点を重点的に確認してください。
- SQLが正常に実行できるか
- 返されるフィールドが完全か
- Field interfaceと表示名が業務上の意味に合っているか
- Record unique keyが存在し、データが一意であるか
- クエリ結果がページ表示に適しているか

フィールドの設定
SQLテーブルの作成後、データテーブル一覧でSQLテーブルの右側にある「Configure fields」をクリックすると、フィールド設定ページに移動できます。フィールド設定では、SQLテーブルに含まれるフィールド、画面上での表示方法、SQLクエリ結果をNocoBaseのField interfaceにマッピングする方法を管理します。 フィールド設定の詳細
UIタイプの切り替え
SQLテーブルの作成後も、フィールド設定で画面設定を調整できます。フィールド設定ページでは主に 、Field interfaceの切り替え、表示名の変更、説明、フィールド固有の設定を行います。

次のような場合に適しています。
- SQLテーブルの作成時に、Field interfaceを誤って設定した
- フィールド表示名が業務上の慣習に合わないため、より分かりやすい名称に変更したい
- クエリ結果フィールドの業務上の意味が変わったため、表示方法を再確認したい
- フィールドの説明やフィールド固有の設定(ドロップダウンの選択肢など)を調整したい
データベースから同期
SQLクエリに変更がなく、基盤となるデータテーブルの構造やフィールドに変更があった場合は、「Configure fields」に移動し、「Sync from database」をクリックしてSQLを再実行し、フィールドを同期できます。フィールドマッピングについては「SQLテーブルの作成」を参照してください。

フィールドの編集
フィールド右側の「Edit」をクリックすると、フィールド設定を編集できます。フィールドの編集は、NocoBaseでのフィールドの表示方法や利用方法を調整する場合に適しています。たとえば、表示名、説明、検証ルール、フィールド固有の設定などを変更できます。 フィールド設定の詳細
フィールド設定を編集しても、SQLクエリ、ソーステーブルのフィールド名、ソーステーブルのフィールド定義、データベースインデックスは変更されません。クエリ結果に含まれる実際の列を調整する必要がある場合は、まずSQLクエリを変更し、その後で再実行してフィールドを同期してください。
フィールドの削除
フィールド右側の「Delete」をクリックすると、個別のフィールドを削除できます。フィールドを削除すると、NocoBaseに保存されたフィールドのみが削除され、SQLクエリやソースデータテーブルの実際の列は削除されません。 フィールド設定の詳細
フィールドを削除すると、ページブロック、フィルター条件、並べ替え、権限、ワークフロー、API、既存の設定に影響する可能性があります。削除する前に、そのフィールドが引き続き使用されているか確認してください。SQLクエリでその列が引き続き返される場合、後で「Sync from database」を実行すると、NocoBaseがそのフィールドを再び識別する可能性があります。
SQLテーブルの編集
データテーブル一覧で対象のSQLテーブル右側にある「Edit」をクリックすると、NocoBase内のSQLテーブルのメタ情報と実行設定を調整できます。編集時の設定項目はSQLテーブルの作成時とほぼ同じですが、Collection name のみ変更できません。
SQLクエリを変更した場合は、再度「Execute」をクリックし、フィールドマッピング、Record unique key、プレビュー結果を確認してください。

SQLクエリを変更すると、フィールド名、フィールドマッピング、Record unique keyが変わる可能性があります。変更後は、ページブロック、チャート、権限、ワークフローが引き続き利用できるか再確認してください。
SQLテーブルの削除
データテーブル一覧でSQLテーブル右側の「Delete」をクリックすると、NocoBase内のSQLテーブル設定とフィールドのみが削除されます。基盤となるソーステーブルや、ソーステーブル内のデータは削除されません。 複数選択して一括削除することもできます。削除する前に、ページブロック、チャート、権限、ワークフロー、外部APIでこのSQLテーブルがまだ使用されていないか確認してください。

