SQLデータベースに接続した後、照会したいテーブルを選択します。主テーブルを選択するか、または複数のテーブルを結合します。
デフォルトでは、テーブルで割り当てられているキーの関係に基づいてテーブルの結合が行われます。
• 主キーは、データを一意に識別できる値を持つ列を示します(たとえば、顧客ID番号など)。主テーブルの行はすべてクエリーに含まれます。
• 副テーブルの外部キーは、結合されるいずれかのテーブルの主キーとマッチされます。副テーブルのうち、一致する行だけがクエリーに含まれます。
キーがない場合、データは列名でマッチされ、2つのテーブルが結合されます。デフォルトでは、副テーブルのうち、一致する行だけがクエリーに含まれます。
この例では、複数のテーブルを結合するやり方を紹介します。ただし、1つのテーブルを使ってクエリーを作成することも可能です。その場合、結合は不要です。
メモ: ここでのクエリービルダーの例で使用しているデータベースは、JMPと一緒にインストールされるサンプルデータには含まれていません。
1. [ファイル]>[新規作成]>[データベースクエリー]を選択し、データベースに接続し、「SQBTest」というスキーマを選択します。データベースへの接続を参照してください。
2. 「スキーマ - テーブル」リストでスキーマを選択します。
テーブルも選択した場合は、[次へ]をクリックした後、そのテーブルが主テーブルになります。
3. 「クエリーのテーブルを選択」ウィンドウの「使用可能なテーブル」リストから「g6_Customers」を選択し、[主]をクリックします。
[列]タブに「CustID」が主キーとして表示されます。データがインデックス化されているため、照会のスピードが上がります。
4. 「使用可能なテーブル」リストから「g6_Movies」と「g6_Rentals」を選択し、[副]をクリックします。
左結合アイコンは、テーブルが自動的に結合されることを示します(図3.36)。「CustID」は、「g6_Customers」の主キーで、他のいずれかのテーブルの外部キーと一致します。
ヒント: 主テーブルまたは副テーブルを追加した後、[関連テーブルの追加]をクリックすると、マッチするデータを含むテーブルが追加されます。このボタンは、関連するテーブルが見つからないときや、主テーブルまたは副テーブルが選択されていないときには使用できません。
図3.36にウィンドウを示します。
図3.36 主テーブルと副テーブルの選択
ヒント: 長いリストでスキーマを検索するには、スキーマの上にある検索ボックスに名前を入力します。テーブルリストの上でテーブルを検索することもできます。赤い三角ボタンをクリックすると、大文字/小文字を区別するオプションや、正規表現を使って検索するオプションが表示されます。
5. テーブルを選択して[テーブルのスナップショット]タブをクリックすると、データのプレビューを確認できます。
図3.37 [テーブルのスナップショット]タブ
6. 主テーブルと副テーブルの下にある、[結合(Join)のプレビュー]をクリックすると、結合の結果として生成されるテーブルのプレビューが表示されます。
ヒント:
• 副テーブルの隣のアイコンは、そのテーブルがクエリーの中で結合されないことを示します。[結合(Join)の編集]ボタンをクリックし、結合に使用する列を指定します。結合に使用する列が見つからない場合は、[削除]ボタンをクリックしてテーブルを削除します。テーブルの結合条件の編集を参照してください。
• [列]タブで、「キー」列に複数の列が表示されることがあります。列の中には主キーと外部キーの両方になれるものがあります。主キーはすべて一意であるため、主キーの横に一意キーのアイコンが表示されることはありません。
• [列]タブで、「参照」は別のスキーマのキーにマッチする外部キーに対して指定されます。この参照は、そのスキーマと列の名前です。
• 別のスキーマまたはデータベースを照会するには、[データソースの変更]をクリックします。
• 複数の異なるソース(例、データベースやMicrosoft Excel)からのデータを結合するには、クエリービルダーでまずはそれらのソース(データベースやExcel)から別々にデータを読み込んだあと[テーブル]メニューの[JMPクエリービルダー]を使用してそれらのJMPデータテーブルを結合してください。
• 主キーを含むテーブルを読み込む際には、[リンクID]列プロパティがデータテーブルの列に追加されます。この列プロパティを使用すると、データテーブルを仮想的に結合できます。データテーブルの仮想結合を参照してください。
「クエリーのテーブルを選択」の赤い三角ボタンのメニューを見ると、[データベーステーブルを自動的に結合]がデフォルトで選択されています。キーの関係や列名の一致する列に基づいて、自動的にデータベースが結合されます。
キーがない場合や、一致する列名がない場合は、[結合(Join)の編集]をクリックし、結合に使用する列を指定します。
メモ: ここでのクエリービルダーの例で使用しているデータベースは、JMPと一緒にインストールされるサンプルデータには含まれていません。
テーブルの結合条件を編集するには
1. [ファイル]>[新規作成]>[データベースクエリー]を選択し、データベースに接続し、「SQBTest」というスキーマを選択します。データベースへの接続を参照してください。
2. 「クエリーのテーブルを選択」ウィンドウで、「g1_books」を主テーブル、「g1_charges」を副テーブルとして選択します。
副テーブルの隣のアイコンは、そのテーブルがクエリーの中で結合されないことを示します。
3. 「副テーブル」ペインで「g1_charges」を選択し、[結合(Join)の編集]をクリックします。
「条件の追加」ウィンドウが開きます。
4. 「左の列」リストで「g1_books」を選択します。
5. 「左の列」ボックスで「Book ID」を選択します。
6. 「右の列」ボックスで「ID」を選択します。
7. 2つのボックスの間で、等号が選択されていることを確認します。
図3.38 「条件の追加」ウィンドウ
8. [次へ]をクリックします。
「結合(Join)の編集」ウィンドウは、「g1_books」の一致しない行がデータテーブルに含まれることを示しています。「g1_charges」のみに含まれる行は省略されます。
Full Outer Joinを行い、すべての行を読み込む場合は、[g1_chargesの一致しない行も含める]を選択します。データベースがFull Outer Joinをサポートしていない場合、一致しない行のオプションは1つしか選択できません。
9. [OK]をクリックします。
メモ: [OK]ボタンは、すべての副テーブルが結合されるようになるまで選択できません。
テーブルの自動結合を防ぐには
• 主テーブルの上にある「クエリーのテーブルを選択」の赤い三角ボタンをクリックし、[データベーステーブルを自動的に結合]の選択を解除します。
• 大規模なデータベースを照会することが多い場合は、メモリの不足を回避するため、[環境設定]>[クエリービルダー]で[クエリーに追加されたテーブルを自動的に結合]の選択を解除します。