FAQ:プリザンターから外部DBのテーブルを参照したい
## 回答
データベースがSQLServerの場合は「リンクサーバー」機能、PostgreSQLの場合は「FDW」機能であらかじめ別DBにアクセスできる状態にしたうえで、[拡張SQL](/ja/manual/extended-sql)を使用します。
---
## 概要
[拡張SQL](/ja/manual/extended-sql)の「OnSelectingColumn」を使用しプリザンターから外部DBのテーブルを参照するサンプルコードです。参照したい外部DBをSQL Serverの「リンクサーバー」機能を使って参照します。
## 前提条件
1. 事前にリンクサーバの設定が完了している必要があります。
SQL Serverの場合はリンクサーバ機能を利用します。PostgreSQLの場合は「FDW」機能を利用します。
[リンク サーバー \(データベース エンジン\) \- SQL Server \| Microsoft Learn](https://learn.microsoft.com/ja-jp/sql/relational-databases/linked-servers/linked-servers-database-engine?view=sql-server-ver16)
[F\.33\. postgres\_fdw](https://www.postgresql.jp/docs/9.6/postgres-fdw.html)
## 説明
プリザンターから参照する外部DBのテーブル例です。
| id | 氏名 | 年齢 |
| :-: | :-: | :-: |
| 1 | ユーザー1 | 21 |
1. プリザンターのテーブルの分類Aに外部DBテーブルの id が格納されていることとします。
1. 外部DBテーブルの 年齢 をプリザンターの 分類Z に表示します。
## 操作手順
### テーブルの設定
1. プリザンターを開き、テーブルを作成してください。
1. [テーブルの管理](/ja/manual/table-management)を開き[一覧](/ja/manual/table-management-grid)タブと[エディタ](/ja/manual/table-editor)タブで「分類Z」を有効化してください。
1. 対象となるテーブルのサイトIDをメモしてください。
### 拡張SQLの設定
1. 後述のJSONファイル例を LinkSever.json として保存してください
- 保存先は以下の通りです。
- C:\web\pleasanter\Implem.Pleasanter\App_Data\Parameters\ExtendedSqls\LinkServer.json
1. SiteIdList をメモしたサイトIDに変更してください。
1. CommandText のSQLのFROM句: [リンクサーバー名].[DB名].[スキーマ名].[テーブル名] [照合順序]は設定したいリンクサーバーと、参照したいテーブル名に変更してください。
1. プリザンターを再起動してください。
## サンプルコード
本サンプルコードはSQLSever用です。
##### JSON(LinkServer.json)
```
{
"Name": "LinkServerTest",
"Description": "LinkServerTest",
"SiteIdList": [xxx],
"ColumnList": ["ClassZ"],
"OnSelectingColumn": true,
"CommandText": "(select age from [LINKSERVER].[postgres].[public].[staff] where id = Results.ClassA COLLATE Japanese_CI_AS)"
}
```
## 関連情報
<div id="ManualList"><ul><li><a href="/ja/manual/table-editor">テーブル機能:レコードのエディタ画面</a><span>2023/04/12 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management">テーブルの管理</a><span>2024/05/24 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-editor">テーブルの管理:エディタ</a><span>2024/04/09 up</span></li>
<li><a href="/ja/manual/table-management-editor-columns">テーブルの管理:エディタ:エディタの項目の設定</a><span>2024/12/19 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-grid">テーブルの管理:一覧画面</a><span>2023/05/12 up</span></li></ul></article>
<ul><li><a href="/ja/manual/extended-sql">開発者向け機能:拡張機能:拡張SQL</a><span>2024/09/13 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />