sql >> データベース >  >> RDS >> Access

データの結合と関係の概要

    データ結合のオプション

    データ結合とレコードの無効性

    フィールドにいくつかのレコードが欠落しているテーブルがある場合があります。従業員のリストの例を次に示します。一部のレコードでは、従業員が所属する部門が指定されていません。

    SELECT Employees.EmployeeNumber AS [Employee #],
           Employees.FirstName,
           Employees.LastName,
           Employees.DepartmentCode AS Department
    FROM Employees;

    これにより、次のようになります:

    リレーションシップを持つ2つのテーブルの内部結合クエリを作成し、子テーブルの一部のレコードで外部キー列の値が欠落している場合、クエリは値を持つレコードのみを生成します。次に例を示します:

    SELECT Employees.EmployeeNumber AS [Employee #],
           Employees.FirstName,
           Employees.LastName,
           Departments.DepartmentName AS Department
    FROM   Departments INNER JOIN Employees
           ON Departments.DepartmentCode = Employees.DepartmentCode;

    これにより、次のようになります:

    クエリが生成するレコードが少ないことに注意してください。たまたま、データベースエンジンは、特に共有フィールド(関係に関係するフィールド)のnullレコードを好みません。子テーブルのすべてのレコードがクエリによって生成されるようにするには、値が欠落しているレコードのデフォルト値を生成します。関係が単純な整数を使用している場合は、値が0のレコードを作成します。関係が文字列を使用している場合は、「N/A」値でレコードを作成できます。レコードがコンピューターで処理される場合は、00000などの汎用/ランダム値を使用してレコードを作成できます。

    実践的な学習:データ結合とレコードの無効性の処理

    1. MicrosoftAccessを起動します
    2. これらのレッスンに付属するリソースから、AltairRealtors3データベースを開きます
    3. リボンで、[作成]をクリックし、[クエリデザイン]をクリックします
    4. [テーブルの表示]ダイアログボックスで、[プロパティ]をダブルクリックし、[閉じる]をクリックします
    5. [プロパティ]リストで、[PropertyNumber]、[City]、[State]をダブルクリックします
    6. クエリをデータセットビューに切り替えます。

    7. レコード数に注意してください:48。
      クエリをデザインビューに切り替えます
    8. ウィンドウの上部にある空の領域を右クリックして、[テーブルの表示]をクリックします
    9. [テーブルの表示]ダイアログボックスで、[PropertyTypes]をダブルクリックし、[閉じる]をクリックします
    10. PropertyTypesリストで、PropertyTypeをダブルクリックします

    11. クエリをデータセットビューに切り替えます

    12. 今回のレコード数に注意してください:44。
      クエリのSQLビューを表示し、そのコードを次のように変更します。
      SELECT Properties.PropertyNumber,
             Properties.City,
             Properties.State,
             Conditions.Condition
      FROM   Properties INNER JOIN Conditions
             ON Properties.Condition = Conditions.Condition;
    13. クエリをデータセットビューに切り替えます

    14. レコード数に注意してください:38。
      保存せずにクエリを閉じます
    15. ナビゲーションペインで、[PropertyTypes]フォームをダブルクリックします
    16. 次のように新しいレコードを作成します。
      PropertyType 説明 不明プロパティタイプが利用できないか、明確ではありません。 イラスト
    17. PropertyTypesテーブルを閉じます
    18. ナビゲーションペインで、[条件]フォームをダブルクリックします
    19. 次のように新しいレコードを作成します。
      PropertyType 説明 不明物件の現在の状態や外観(内部および/または外部)が確認されていないか、評価されていないか、明確にわかっていません。
    20. 条件テーブルを閉じます
    21. ナビゲーションペインで、[プロパティ]テーブルを右クリックし、[デザインビュー]をクリックします
    22. ウィンドウの上部にある[PropertyType]をクリックします
    23. 下部にある[デフォルト値]をクリックして、「不明」と入力します。
    24. ウィンドウの上部にある[状態]をクリックします
    25. 下部にある[デフォルト値]をクリックして、「不明」と入力します。
    26. テーブルを保存して、データセットビューに切り替えます
    27. [PropertyType]列で、空のセルごとに[不明]を選択します
    28. [条件]列で、空のセルごとに[不明]を選択します
    29. PropertyType列とCondition列の両方にデフォルト値があることに注意してください
    30. 指定された値のみを設定して、次のように新しいレコードを作成します。
      プロパティ# プロパティタイプ 都市 郵便番号 寝室 バスルーム 完成した地下室 屋内ガレージ 状態 市場価値 476005シングルファミリーハノーバーPA1733132.50チェック済み 425790 152466 Martinsburg WV 1 1.00135670427048コンドミニアムAlexandriaVA32.00修理が必要622845297427Matinsburg Excellence 729336 Alexandria VA32.50修理が必要750000300618Harrisburg PA 17109 53.50確認済み 確認済み 良い形515885

    31. テーブルを閉じる
    32. リボンで、[作成]をクリックし、[クエリデザイン]をクリックします
    33. [テーブルの表示]ダイアログボックスで、[プロパティ]をダブルクリックし、[閉じる]をクリックします
    34. [プロパティ]リストで、[PropertyNumber]、[City]、[State]をダブルクリックします
    35. クエリをデータセットビューに切り替えます
    36. レコード数に注意してください:51。
      クエリをデザインビューに切り替えます
    37. ウィンドウの上部にある空の領域を右クリックして、[テーブルの表示]をクリックします
    38. [テーブルの表示]ダイアログボックスで、[PropertyTypes]をダブルクリックし、[閉じる]をクリックします
    39. PropertyTypesリストで、PropertyTypeをドラッグし、下側のCityにドロップします
    40. [プロパティ]リストで、[寝室とバスルーム]をダブルクリックします

    41. クエリをデータセットビューに切り替えます

    42. 今回はレコード数51に注意してください。
      保存せずにクエリを閉じます
    43. 以前に作成して使用したLambdaSquareApartments1データベースを開きます
    44. リボンで、[作成]をクリックし、[クエリデザイン]をクリックします
    45. [テーブルの表示]ダイアログボックスで、[支払い]をダブルクリックし、[閉じる]をクリックします
    46. [支払い]リス​​トで、[ReceiptNumber]、[PaymentDate]、[ProcessedBy]、[RegistrationNumber]、および[PaymentAmount]をダブルクリックします
    47. クエリをデータセットビューに切り替えます

    48. レコード数に注意してください:63。
      クエリをデザインビューに切り替えます
    49. ウィンドウの空の領域を右クリックして、[テーブルの表示...]をクリックします。
    50. [テーブルの表示]ダイアログボックスで、[従業員]をダブルクリックし、[閉じる]をクリックします
    51. EmployeeNumberをドラッグしてProcessedByにドロップします
    52. ウィンドウの下側で、ProcessedByを
      Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
      に置き換えます。

    53. クエリをデータセットビューに切り替えます

    54. レコード数に注意してください:46。
      保存せずにクエリを閉じます
    55. ナビゲーションペインで、[従業員]テーブルをダブルクリックし、次のように新しいレコードを作成します(これは、銀行に直接家賃を預けるテナントなど、銀行で行われたトランザクションの場合です)。
      従業員番号 ファーストネーム タイトル 00000自動処理電子トランザクション
    56. 従業員テーブルを閉じます
    57. ナビゲーションペインで、[支払い]テーブルを右クリックし、[デザインビュー]をクリックします
    58. ウィンドウの上部にある[ProcessedBy]をクリックします
    59. 下部にある[デフォルト値]をクリックして、 "00000"と入力します。
    60. テーブルを保存して閉じます
    61. 支払いテーブルを開きます
    62. [ProcessedBy]列のすべての空のセルに、 00000と入力します。
    63. 支払いテーブルを閉じます
    64. リボンで、[作成]をクリックし、[クエリデザイン]をクリックします
    65. [テーブルの表示]ダイアログボックスで、[支払いと従業員]をダブルクリックします
    66. [閉じる]をクリックします
    67. EmployeeNumberをドラッグしてProcessedByにドロップします
    68. [支払い]リス​​トで、[ReceiptNumber]と[PaymentDate]をダブルクリックします
    69. Tabキーを押して、
      Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
      と入力します。
    70. [支払い]リス​​トで、[RegistrationNumber]と[PaymentAmount]をダブルクリックします
    71. クエリをデータセットビューに切り替えます
    72. レコード数に注意してください:63。
      保存せずにクエリを閉じます

    2つ以上のテーブルを結合する

    これまでのところ、joinステートメントには2つのテーブルしか含まれていませんでした。実際には、それよりも多くのテーブルを使用できます。 3つのテーブルを結合するための基本的な式は次のとおりです。

    SELECT field-name(s) FROM first-table
    first-join-type second-table ON condition1
    second-join-type third-table ON condition2

    式を開始するには、最初のテーブルを2番目のテーブルに結合します。これは、両方のテーブルが主キーと外部キーのタイプの関係で列を共有する必要があることを意味します。同様に、2番目の結合を作成できます。もちろん、2番目と3番目のテーブルには共通の列が必要です。ほとんどの場合、3つのテーブルすべてが共有する列が必要です。ほとんどの場合、関係は親テーブルの主キー列から始まります。その列は、他の2つのテーブルで外部キーとして表されます。

    実践的な学習:2つ以上のテーブルを結合する

    1. リボンで、[作成]をクリックし、[フォームデザイン]をクリックします
    2. プロパティシートで、[すべて]タブをクリックします。
      [ソースの記録]をクリックして、省略記号ボタンをクリックします
    3. [テーブルの表示]で、[従業員、登録、アパート]をダブルクリックします
    4. [閉じる]をクリックします
    5. EmployeesリストからEmployeeNumberをドラッグし、RegistrationsリストのProcessedByにドロップします
    6. アパートリストからApartmentCodeをドラッグし、登録リストのPropNbrにドロップします

    7. [登録]リストで、[RegistrationID]と[RegistrationDate]をダブルクリックします
    8. Tabキーを押して、
      Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
      と入力します。
    9. [登録]リストで、[FirstName]、[LastName]、[MaritalStatus]、および[NumberOfChildren]をダブルクリックします
    10. タブを押して次のように入力します:
      Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
    11. クエリのSQLビューを表示します:
      SELECT Registrations.RegistrationID AS [Regist #],
             Registrations.RegistrationDate AS [Regist Date],
             [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")" AS Employee,
             Registrations.FirstName,
             Registrations.LastName,
             Registrations.MaritalSituation AS Status,
             Registrations.NumberOfChildren AS Children,
             "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month" AS Apartment
      FROM   Apartments INNER JOIN (Employees INNER JOIN Registrations
             ON Employees.EmployeeNumber = Registrations.ProcessedBy)
             ON Apartments.ApartmentCode = Registrations.PropNbr;
    12. クエリビルダーを閉じる
    13. 変更を保存するかどうかを尋ねられたら、[はい]をクリックします
    14. フォームを家賃の割り当てとして保存します
    15. 支配者の交差点にあるボタンをダブルクリックします
    16. プロパティシートで、次の特性を変更します。
      キャプション:ラムダスクエアアパート-家賃の割り当て
      デフォルト値:連続形式
      オートセンター:はい
      ナビゲーションボタン:いいえ
    17. リボンで、[デザイン]をクリックします
    18. [ツール]セクションで、[既存のフィールドの追加]をクリックします
    19. フィールドリストで、[アパート]をクリックし、Shiftキーを押したまま、[登録番号]をクリックして、Shiftキーを放します
    20. 選択範囲をフォームにドラッグします
    21. リボンで、[配置]をクリックし、[表形式]をクリックします
    22. 選択範囲を左にドラッグします
    23. Ctrl+Aを押してすべてのコントロールを選択します
    24. リボンで、[レイアウトの削除]をクリックします
    25. フォームのデザインを完成させます。次に例を示します。

    26. フォームを保存して閉じます

    データ結合とレコード分析

    レコードの並べ替え

    これまでに作成したデータ結合では、すべてのレコードを考慮し、SQLに組み込まれている結合のルールのみを使用してデータベースエンジンにそれらをリストさせました。このようなリストをより制限的にするために、いくつかのレコードを分離するためのいくつかの条件を適用できます。フィルタは、クエリのデザインビューまたは同様のウィンドウで視覚的に作成できます。 SQLでフィルターを作成することもできます。前のレッスンで行ったように、 SELECTに基準を含める ステートメントでは、場所を作成できます 条項。

    実践的な学習:結合とデータ分析の紹介

    1. 以前に使用したMonsonUniversity1データベースを開きます
    2. クエリを開始するには、リボンで[作成]をクリックし、[クエリデザイン]をクリックします
    3. [テーブルの表示]ダイアログボックスで、[閉じる]をクリックします
    4. ウィンドウの上部を右クリックして、[SQLビュー]をクリックします
    5. ステートメントを次のように変更します。
      SELECT EmployeeNumber AS [Employee #],
             FirstName      AS [First Name],
             LastName       AS [Last Name],
             Title,
             DepartmentName AS Department
      FROM   Employees, Departments
      WHERE  Employees.DepartmentCode = Departments.DepartmentCode
      ORDER  BY LastName;
    6. データセットビューで結果をプレビューします
    7. 必要に応じて、リボンの[ホーム]をクリックします。
      次の特性を変更します。
      フォント名:Californian FB(そのフォントがない場合は、Times New Romanを選択してください)
      フォントの色:青、アクセント1、明るい80%(テーマの色:5列目、2行目)
      背景色:その他の色:赤:195、緑:95、青:15
      グリッド線:水平
      代替行の色:その他の色:赤:128、緑:0、青:0

    8. クエリを保存せずに閉じます
    9. MicrosoftAccessを閉じます

    1. MYSQLの別の列でMAX(列値)、PARTITIONの行を選択するにはどうすればよいですか?

    2. 外部キーのインデックス作成の利点

    3. エラー「ORA-01789:クエリブロックの結果列の数が正しくありません」を修正しました

    4. CakePHP2.0でのOracleデータベースの使用