Skapa yttre kopplingar (Visual Database Tools)

gäller för:SQL Server

Som standard skapar fråge- och vydesignerverktygen (Visual Database Tools) en inre koppling mellan tabeller. Inre kopplingar eliminerar de rader som inte matchar med en rad från den andra tabellen. Yttre kopplingar returnerar dock alla rader från minst en av tabellerna eller vyerna som nämns i FROM -satsen, så länge dessa rader uppfyller några WHERE eller HAVING sökvillkor. Om du vill inkludera datarader i resultatuppsättningen som inte har någon matchning i den anslutna tabellen kan du skapa en yttre koppling.

När du skapar en yttre koppling är den ordning i vilken tabeller visas i SQL-instruktionen (vilket återspeglas i SQL-fönstret) betydande. Den första tabellen som du lägger till blir tabellen "vänster" och den andra tabellen blir tabellen "höger". (Den faktiska ordning i vilken tabellerna visas i diagramfönstret (Visual Database Tools) är inte betydande.) När du anger en yttre koppling till vänster eller höger refererar du till i vilken ordning tabellerna lades till i frågan och i vilken ordning de visas i SQL-instruktionen i SQL-fönstret (Visual Database Tools).

Skapa en yttre koppling

  1. Skapa kopplingen, antingen automatiskt eller manuellt. Mer information finns i Koppla tabeller automatiskt (Visual Database Tools) eller Koppla tabeller manuellt (Visual Database Tools).

  2. Välj kopplingsraden i fönstret Diagram och välj sedan på menyn < . Välj sedan det kommando som innehåller tabellen vars extra rader du vill inkludera.

    • Välj den första tabellen för att skapa en vänster yttre koppling.
    • Välj den andra tabellen för att skapa en höger yttre koppling.
    • Välj båda tabellerna för att skapa en fullständig yttre koppling.

När du anger en yttre koppling ändrar fråge- och vydesignern kopplingslinjen så att den anger en yttre koppling.

Dessutom ändrar fråge- och vydesignern SQL-instruktionen i SQL-fönstret för att återspegla ändringen i kopplingstyp, som du ser i följande instruktion:

SELECT employee.job_id,
       employee.emp_id,
       employee.fname,
       employee.minit,
       jobs.job_desc
FROM employee
     LEFT OUTER JOIN jobs
         ON employee.job_id = jobs.job_id;

Eftersom en yttre koppling innehåller omatchade rader kan du använda den för att hitta rader som bryter mot begränsningar för sekundärnyckel. För att göra det skapar du en yttre koppling och lägger sedan till ett sökvillkor för att hitta rader där den primära nyckelkolumnen i tabellen längst till höger är null. Följande yttre koppling hittar till exempel rader i employee tabellen som inte har motsvarande rader i jobs tabellen:

SELECT employee.emp_id,
       employee.job_id
FROM employee
     LEFT OUTER JOIN jobs
         ON employee.job_id = jobs.job_id
WHERE (jobs.job_id IS NULL);