公開日: 11/25/2021

SQLデータベースからのテーブルの選択

SQLデータベースに接続した後、照会したいテーブルを選択します。主テーブルを選択するか、または複数のテーブルを結合します。

デフォルトでは、テーブルで割り当てられているキーの関係に基づいてテーブルの結合が行われます。

主キーは、データを一意に識別できる値を持つ列を示します(たとえば、顧客ID番号など)。主テーブルの行はすべてクエリーに含まれます。

副テーブルの外部キーは、結合されるいずれかのテーブルの主キーとマッチされます。副テーブルのうち、一致する行だけがクエリーに含まれます。

キーがない場合、データは列名でマッチされ、2つのテーブルが結合されます。デフォルトでは、副テーブルのうち、一致する行だけがクエリーに含まれます。

この例では、複数のテーブルを結合するやり方を紹介します。ただし、1つのテーブルを使ってクエリーを作成することも可能です。その場合、結合は不要です。

メモ: ここでのクエリービルダーの例で使用しているデータベースは、JMPと一緒にインストールされるサンプルデータには含まれていません。

1. [ファイル]>[新規作成]>[データベースクエリー]を選択し、データベースに接続し、「SQBTest」というスキーマを選択します。データベースへの接続を参照してください。

2. 「スキーマ - テーブル」リストでスキーマを選択します。

テーブルも選択した場合は、[次へ]をクリックした後、そのテーブルが主テーブルになります。

3. 「クエリーのテーブルを選択」ウィンドウの「使用可能なテーブル」リストから「g6_Customers」を選択し、[主]をクリックします。

[列]タブに「CustID」が主キーとして表示されます。データがインデックス化されているため、照会のスピードが上がります。

4. 「使用可能なテーブル」リストから「g6_Movies」「g6_Rentals」を選択し、[副]をクリックします。

左結合アイコンImage shown hereは、テーブルが自動的に結合されることを示します(図3.36)。「CustID」は、「g6_Customers」の主キーで、他のいずれかのテーブルの外部キーと一致します。

ヒント: 主テーブルまたは副テーブルを追加した後、[関連テーブルの追加]をクリックすると、マッチするデータを含むテーブルが追加されます。このボタンは、関連するテーブルが見つからないときや、主テーブルまたは副テーブルが選択されていないときには使用できません。

図3.36にウィンドウを示します。

図3.36 主テーブルと副テーブルの選択 

Selecting Primary and Secondary Tables

ヒント: 長いリストでスキーマを検索するには、スキーマの上にある検索ボックスに名前を入力します。テーブルリストの上でテーブルを検索することもできます。赤い三角ボタンをクリックすると、大文字/小文字を区別するオプションや、正規表現を使って検索するオプションが表示されます。

5. テーブルを選択して[テーブルのスナップショット]タブをクリックすると、データのプレビューを確認できます。

図3.37 [テーブルのスナップショット]タブ 

Table Snapshot Tab

6. 主テーブルと副テーブルの下にある、[結合(Join)のプレビュー]をクリックすると、結合の結果として生成されるテーブルのプレビューが表示されます。

ヒント:

副テーブルの隣のImage shown hereアイコンは、そのテーブルがクエリーの中で結合されないことを示します。[結合(Join)の編集]ボタンImage shown hereをクリックし、結合に使用する列を指定します。結合に使用する列が見つからない場合は、[削除]ボタンImage shown hereをクリックしてテーブルを削除します。テーブルの結合条件の編集を参照してください。

[列]タブで、「キー」列に複数の列が表示されることがあります。列の中には主キーと外部キーの両方になれるものがあります。主キーはすべて一意であるため、主キーの横に一意キーのアイコンが表示されることはありません。

[列]タブで、「参照」は別のスキーマのキーにマッチする外部キーに対して指定されます。この参照は、そのスキーマと列の名前です。

別のスキーマまたはデータベースを照会するには、[データソースの変更]をクリックします。

複数の異なるソース(例、データベースやMicrosoft Excel)からのデータを結合するには、クエリービルダーでまずはそれらのソース(データベースやExcel)から別々にデータを読み込んだあと[テーブル]メニューの[JMPクエリービルダー]を使用してそれらのJMPデータテーブルを結合してください。

主キーを含むテーブルを読み込む際には、[リンクID]列プロパティがデータテーブルの列に追加されます。この列プロパティを使用すると、データテーブルを仮想的に結合できます。データテーブルの仮想結合を参照してください。

テーブルの結合条件の編集

「クエリーのテーブルを選択」の赤い三角ボタンのメニューを見ると、[データベーステーブルを自動的に結合]がデフォルトで選択されています。キーの関係や列名の一致する列に基づいて、自動的にデータベースが結合されます。

キーがない場合や、一致する列名がない場合は、[結合(Join)の編集]Image shown hereをクリックし、結合に使用する列を指定します。

メモ: ここでのクエリービルダーの例で使用しているデータベースは、JMPと一緒にインストールされるサンプルデータには含まれていません。

テーブルの結合条件を編集するには

1. [ファイル]>[新規作成]>[データベースクエリー]を選択し、データベースに接続し、「SQBTest」というスキーマを選択します。データベースへの接続を参照してください。

2. 「クエリーのテーブルを選択」ウィンドウで、「g1_books」を主テーブル、「g1_charges」を副テーブルとして選択します。

副テーブルの隣のImage shown hereアイコンは、そのテーブルがクエリーの中で結合されないことを示します。

3. 「副テーブル」ペインで「g1_charges」を選択し、[結合(Join)の編集]Image shown hereをクリックします。

「条件の追加」ウィンドウが開きます。

4. 「左の列」リストで「g1_books」を選択します。

5. 「左の列」ボックスで「Book ID」を選択します。

6. 「右の列」ボックスで「ID」を選択します。

7. 2つのボックスの間で、等号が選択されていることを確認します。

図3.38 「条件の追加」ウィンドウ 

The Add Condition Window

8. [次へ]をクリックします。

「結合(Join)の編集」ウィンドウは、「g1_books」の一致しない行がデータテーブルに含まれることを示しています。「g1_charges」のみに含まれる行は省略されます。

Full Outer Joinを行い、すべての行を読み込む場合は、[g1_chargesの一致しない行も含める]を選択します。データベースがFull Outer Joinをサポートしていない場合、一致しない行のオプションは1つしか選択できません。

9. [OK]をクリックします。

メモ: [OK]ボタンは、すべての副テーブルが結合されるようになるまで選択できません。

テーブルの自動結合を防ぐには

主テーブルの上にある「クエリーのテーブルを選択」の赤い三角ボタンをクリックし、[データベーステーブルを自動的に結合]の選択を解除します。

大規模なデータベースを照会することが多い場合は、メモリの不足を回避するため、[環境設定]>[クエリービルダー][クエリーに追加されたテーブルを自動的に結合]の選択を解除します。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).