6.2.1. ViewCreator SQLビルダ アシスタント の利用例¶
ここでは、実際に アシスタント を利用して、SQLを生成する例をご紹介します。
6.2.1.1. ユーザ一覧を取得するSQLを生成する¶
以下のように、アシスタント に指示します。
ユーザの基本的な情報を一覧化して欲しい。
アシスタント の回答例です。
ユーザの基本的な情報を一覧化するためのSQLクエリは以下の通りです。このクエリでは、`imm_user`テーブルからユーザに関する各種情報を取得します。
```sql
SELECT
u.user_cd AS user_code, -- ユーザコード
u.locale_id AS locale_id, -- ロケールID
u.term_cd AS term_code, -- 期間コード
u.start_date AS start_date, -- 有効期間の開始日
u.end_date AS end_date, -- 有効期間の終了日
u.user_name AS user_name, -- ユーザ名
u.user_search_name AS user_search_name, -- ユーザ検索名
u.sex AS gender, -- 性別
u.country_cd AS country_code, -- 国コード
u.zip_code AS zip_code, -- 郵便番号
u.address1 AS address1, -- 住所1
u.address2 AS address2, -- 住所2
u.address3 AS address3, -- 住所3
u.telephone_number AS telephone, -- 電話番号
u.extension_number AS extension_number, -- 内線番号
u.fax_number AS fax_number, -- FAX番号
u.extension_fax_number AS extension_fax_number, -- 内線FAX番号
u.mobile_number AS mobile_number, -- 携帯電話番号
u.email_address1 AS email1, -- メールアドレス1
u.email_address2 AS email2, -- メールアドレス2
u.mobile_email_address AS mobile_email, -- 携帯メールアドレス
u.url AS url, -- URL
u.notes AS notes, -- 備考
u.delete_flag AS delete_flag, -- 削除フラグ
u.sort_key AS sort_key, -- ソートキー
u.create_user_cd AS created_by, -- 作成者
u.create_date AS created_at, -- 作成日
u.record_user_cd AS updated_by, -- 最終更新者
u.record_date AS updated_at -- 最終更新日
FROM
imm_user u -- ユーザテーブル
WHERE
u.locale_id = 'ja' -- ロケールIDが'ja'のユーザ
AND u.delete_flag = '0'; -- ユーザが削除されていない
```
このクエリは、ロケールIDが'ja'であり、削除フラグが'0'(有効)のユーザの情報を一覧で取得します。
項目数が多いので、代表的な項目に絞るように続けて指示します。
代表的な項目のみに絞ってください。
アシスタント の回答例です。
以下のSQLクエリは、ユーザの代表的な情報のみを一覧化するためのものです。ユーザコード、ロケールID、ユーザ名、およびメールアドレス1と電話番号に絞っています。
```sql
SELECT
imm_user.user_cd AS user_code,
imm_user.locale_id AS locale_id,
imm_user.user_name AS user_name,
imm_user.email_address1 AS email_address1,
imm_user.telephone_number AS telephone_number
FROM
imm_user
WHERE
imm_user.locale_id = 'ja' -- ロケールIDが'ja'のユーザ
AND imm_user.delete_flag = '0' -- ユーザが削除されていない
ORDER BY
imm_user.user_cd;
```
このクエリは、必要な項目を厳選しており、ユーザコード順に結果を整列させます。
各ユーザが持っているロールも一覧で見たいので、続けて指示します。
各ユーザが保持しているロールの情報も取得してください。
アシスタント の回答例です。
以下のSQLクエリは、ユーザの基本的な情報に加えて、各ユーザが保持しているロールの情報を取得します。`imm_user`テーブルと`b_m_account_role_b`テーブルを結合し、ユーザコード、ユーザ名、メールアドレス、電話番号、ロールID、およびロール名を取得しています。
```sql
SELECT
u.user_cd AS user_code,
u.locale_id AS locale_id,
u.user_name AS user_name,
u.email_address1 AS email_address1,
u.telephone_number AS telephone_number,
r.role_id AS role_id,
r.role_name AS role_name
FROM
imm_user u
JOIN
b_m_account_role_b ar ON u.user_cd = ar.user_cd
JOIN
b_m_role_b r ON ar.role_id = r.role_id
WHERE
u.locale_id = 'ja' -- ロケールIDが'ja'のユーザ
AND u.delete_flag = '0' -- ユーザが削除されていない
AND ar.valid_start_date <= CURRENT_TIMESTAMP -- ロールの有効開始日
AND ar.valid_end_date >= CURRENT_TIMESTAMP -- ロールの有効終了日
ORDER BY
u.user_cd, r.role_id;
```
このクエリでは、ユーザとそのロールに関する必要な情報を一度の実行で取得し、ユーザコードおよびロールID順に整列させています。ロールの有効期間も考慮されています。
このように、AI と自然文で対話しながら、SQLを生成できます。
実行できないSQLや意図しない結果を取得するSQLだった場合は、エラーコードやエラーメッセージなどのできるだけ具体的な情報を追加で提供すると適切な回答が得られる可能性が高まります。
6.2.1.2. SQL生成に利用するテーブルを予め指定する場合¶
利用して欲しいテーブルが最初から分かっている場合は、指示に含めておくと、より適切なSQLが生成される可能性が高まります。
### 指示
ユーザの基本的な情報を一覧化してください。
一覧には、ユーザが保持しているロールの情報も含めてください。
### 条件
次のテーブルを参照してください。
imm_user, b_m_account_b, b_m_account_role_b
コラム
上記は、マークダウン記法を利用した指示の例です。
アシスタント の回答例です。
以下は、ユーザの基本情報およびその保持するロールの情報を一覧化するためのSQLクエリです。
```sql
SELECT
u.user_cd AS user_code, -- ユーザコード
u.user_name AS user_name, -- ユーザ名
u.locale_id AS user_locale_id, -- ロケールID
u.term_cd AS user_term_code, -- 期間コード
u.start_date AS user_start_date, -- ユーザの有効期間の開始日
u.end_date AS user_end_date, -- ユーザの有効期間の終了日
u.sex AS user_sex, -- 性別
u.country_cd AS user_country_code, -- 国コード
a.first_day_of_week AS user_first_day_of_week, -- 週の開始曜日
ar.role_id AS role_id, -- ロールID
ar.valid_start_date AS role_valid_start_date, -- ロール有効開始日
ar.valid_end_date AS role_valid_end_date -- ロール有効終了日
FROM
imm_user u -- ユーザ情報を管理するテーブル
LEFT JOIN
b_m_account_b a ON u.user_cd = a.user_cd -- アカウント情報を管理するテーブルとの結合
LEFT JOIN
b_m_account_role_b ar ON u.user_cd = ar.user_cd -- アカウントに付与されたロール情報を管理するテーブルとの結合
WHERE
u.locale_id = 'ja' -- 日本語のロケールIDを持つレコードのみを抽出
AND u.delete_flag = '0'; -- 削除されていないユーザのみを対象
```
このクエリは、`imm_user`、`b_m_account_b`、および`b_m_account_role_b`テーブルを結合し、ユーザの基本情報とそのロールの情報を取得します。データは、日本語ロケールIDを持つ有効なユーザのみにフィルタリングされています。
6.2.1.3. どのようなテーブルがあるのか知りたい場合¶
知りたいテーブルに関する指示をします。
このシステムで利用可能なユーザに関係するテーブルの一覧を出してください。
アシスタント の回答例です。
ユーザに関係するテーブルは以下の通りです。
1. **ユーザ**
- テーブル名: `imm_user`
- 説明: ユーザの個人情報のマスタデータを管理するテーブルです。
2. **ユーザ分類**
- テーブル名: `imm_user_ctg`
- 説明: ユーザ分類のマスタデータを管理するテーブルです。
3. **ユーザ分類所属**
- テーブル名: `imm_user_ctg_ath`
- 説明: ユーザがユーザ分類項目に分類されていることを表すマスタデータを管理するテーブルです。
4. **ユーザ分類項目**
- テーブル名: `imm_user_ctg_itm`
- 説明: ユーザ分類ごとに定義されている詳細(マスタデータ)を管理します。
5. **ユーザプロファイル画像**
- テーブル名: `imm_user_image`
- 説明: ユーザのプロファイル画像を管理するテーブルです。
これらのテーブルがユーザに関するデータを管理しています。他に知りたい情報がありましたら、教えてください。
imm_user について詳細を知りたいので、続けて指示します。
imm_user について詳細を知りたいです。
アシスタント の回答例です。
テーブル `imm_user` に関する詳細は以下の通りです。
### テーブル名: imm_user
- **論理名**: ユーザ
- **説明**: ユーザの個人情報のマスタデータを管理するテーブルです。
### カラム情報
| 物理名 | 論理名 | 型 | nullable | 説明 |
|-------------------|-----------------------------|----------|----------|-------------------------------|
| user_cd | ユーザコード | varchar | false | |
| locale_id | ロケールID | varchar | false | |
| term_cd | 期間コード | varchar | false | ユーザの期間に対して一意となるコード |
| start_date | ユーザの有効期間の開始日 | date | false | |
| end_date | ユーザの有効期間の終了日 | date | false | |
| user_name | ユーザ名 | varchar | false | |
| user_search_name | ユーザ検索名 | varchar | true | |
| sex | 性別 | varchar | true | 0:男性 1:女性 2:その他 9:回答しない |
| country_cd | 国コード | varchar | true | ISO 3166-1 |
| zip_code | 郵便番号 | varchar | true | |
| address1 | 住所1 | varchar | true | |
| address2 | 住所2 | varchar | true | |
| address3 | 住所3 | varchar | true | |
| telephone_number | 電話番号 | varchar | true | |
| extension_number | 内線番号 | varchar | true | |
| fax_number | FAX番号 | varchar | true | |
| extension_fax_number | 内線FAX番号 | varchar | true | |
| mobile_number | 携帯電話番号 | varchar | true | |
| email_address1 | メールアドレス1 | varchar | true | |
| email_address2 | メールアドレス2 | varchar | true | |
| mobile_email_address | 携帯メールアドレス | varchar | true | |
| url | URL | varchar | true | |
| notes | 備考 | varchar | true | |
| delete_flag | 削除フラグ | varchar | false | 0:有効 1:無効 |
| sort_key | ソートキー | numeric | false | |
| create_user_cd | 作成者 | varchar | false | |
| create_date | 作成日 | timestamp| false | |
| record_user_cd | 最終更新者 | varchar | false | |
| record_date | 最終更新日 | timestamp| false | |
このテーブルでは、各ユーザの基本的な情報や連絡先、住所、そして削除フラグなどの情報が管理されています。他に知りたいことがあれば教えてください。