Dołącz podstawy

Za pomocą sprzężenia, można pobierać dane z dwóch lub więcej tabel opartych na logiczne relacje między tabelami.Joins indicate how Microsoft SQL Server should use data from one table to select the rows in another table.

A warunek łączyć definiuje sposób powiązanych tabel w kwerendzie przez:

  • Określanie kolumna z każdej tabela stosowanej do łączyć.Typowe warunek łączyć Określa klucz obcy z jednej tabela i skojarzonego z nim klucza w innej tabela.

  • Określanie operator logicznego (na przykład = lub <>,) do porównywania wartości z kolumn.

Sprzężenia wewnętrzne można określić w polu od którejkolwiek lub klauzul WHERE.Sprzężenia zewnętrzne można określić w klauzula FROM tylko.Warunki łączyć łączą się z WHERE i HAVING wyszukiwania warunki określające wiersze, które są wybrane z tabel podstawowych w klauzula FROM.

Określenie łączyć warunków w klauzula FROM pomaga oddzielić je od innych warunków wyszukiwania, które mogą być określone w klauzula WHERE i jest to zalecana metoda określania łączyć.Uproszczone ISO Z klauzula łączyć składnia jest następująca:

FROM first_table join_type second_table [ON (join_condition)]

join_typeOkreśla, jaki rodzaj łączyć jest wykonywane: an inner, outer, or cross join.join_condition defines the predicate to be evaluated for each pair of joined rows.Oto przykład specyfikacji łączyć klauzula FROM:

FROM Purchasing.ProductVendor JOIN Purchasing.Vendor
     ON (ProductVendor.BusinessEntityID = Vendor.BusinessEntityID)

Oto prosty wybór instrukcja za pomocą tego łączyć:

SELECT ProductID, Purchasing.Vendor.BusinessEntityID, Name
FROM Purchasing.ProductVendor JOIN Purchasing.Vendor
    ON (Purchasing.ProductVendor.BusinessEntityID = Purchasing.Vendor.BusinessEntityID)
WHERE StandardPrice > $10
  AND Name LIKE N'F%'
GO

Wybierz zwraca informacje produktu i dostawcy dla dowolnej kombinacji części dostarczonych przez przedsiębiorstwo, którego nazwa firmy rozpoczyna się od litery f i cena produktu wynosi więcej niż 10 zł.

Gdy wielu tabel podanych w jednej kwerendzie wszystkie kolumna odwołania muszą być jednoznaczne.W poprzednim przykładzie zarówno ProductVendor i Vendor tabela ma kolumna o nazwie BusinessEntityID.Musi być kwalifikowany zduplikowanych między dwie lub więcej tabel w kwerendzie nazwy kolumna z nazwą tabela.Wszystkie odniesienia do Vendor kolumn w przykładzie są kwalifikowane.

Gdy nazwa kolumna nie jest duplikowany w dwóch lub więcej tabel użytych w kwerendzie, odwołania do tego nie trzeba kwalifikowaną nazwę tabela.Jest to zademonstrowane w poprzednim przykładzie.Czasami trudno zrozumieć, ponieważ nie ma nic do wskazania, pod warunkiem że każda kolumna tabela jest takiej instrukcja SELECT.Czytelność kwerendy zwiększona, jeżeli wszystkie kolumny są poprzedzone ich nazwy tabela.Dalsze zwiększona czytelność, jeśli aliasy tabela są używane, szczególnie wtedy, gdy musi być kwalifikowany nazwy tabela z bazy danych i właściciel nazwy.Oto sam przykład, z wyjątkiem tabela przypisano aliasów i kwalifikacje kolumny z tabela aliasy, aby poprawić czytelność:

SELECT pv.ProductID, v.BusinessEntityID, v.Name
FROM Purchasing.ProductVendor AS pv 
JOIN Purchasing.Vendor AS v
    ON (pv.BusinessEntityID = v.BusinessEntityID)
WHERE StandardPrice > $10
    AND Name LIKE N'F%';

Poprzednich przykładach określone warunki łączyć w klauzula FROM, który jest preferowany metoda.Następująca kwerenda zawiera takie same warunek łączyć określonych w klauzula WHERE:

SELECT pv.ProductID, v.BusinessEntityID, v.Name
FROM Purchasing.ProductVendor AS pv, Purchasing.Vendor AS v
WHERE pv.VendorID = v.VendorID
    AND StandardPrice > $10
    AND Name LIKE N'F%';

Lista wyboru dla łączyć można odwoływać się do wszystkich kolumn w tabelach połączonych lub dowolny podzbiór kolumn.Lista wyboru nie musi zawierać kolumny z każdej tabela w łączyć.Na przykład w tabeli trzy łączyć, tylko jedna tabela może służyć do mostka z innych tabel do trzeciej tabeli i Brak kolumn z tabeli środek musi odwoływać się na liście.

Chociaż zazwyczaj mają warunki łączyć porównań równości (=), porównania lub operatory relacyjne można określić, jak inne predykatów.Aby uzyskać więcej informacji, zobacz Używanie operatorów w wyrażeniach i GDZIE (Transact-SQL).

Gdy SQL Server przetwarza sprzężeń, aparatu kwerend wybiera najbardziej efektywne metoda (z kilku możliwości) przetwarzania łączyć.Fizycznego wykonania różnych sprzężeń można używać wielu różnych optymalizacje i dlatego nie można wiarygodnie przewidzieć.

Kolumny używanych w warunek łączyć , nie muszą mieć taką samą nazwę lub być tego samego typu danych.Jednak jeśli typy danych nie są identyczne, muszą być zgodne, lub być typów, SQL Server można niejawnie przekonwertować.Jeśli typy danych nie można niejawnie przekonwertować, warunek łączyć należy jawnie skonwertować typ danych przy użyciu funkcja RZUTOWANIA.Aby uzyskać więcej informacji o konwersje niejawne i jawne, zobacz Konwersja typu danych (aparat bazy danych).

Większość kwerend za pomocą łączyć można przebudowywany przy użyciu podzapytanie (kwerenda zagnieżdżona w innej kwerendzie), a większość podkwerend można przepisany łączyć.Aby uzyskać więcej informacji na temat podkwerendy, zobacz Podkwerendą podstawy.

Ostrzeżenie

Tabel nie można przyłączyć bezpośrednio na ntext, text, lub image kolumny.Jednak tabele można sprzężone pośrednio na ntext, text, lub image kolumn za pomocą PODCIĄG.Na przykład zaznacz * Z t1 łączyć t2 na SUBSTRING(t1.textcolumn, 1, 20) = SUBSTRING(t2.textcolumn, 1, 20) wykonuje łączyć wewnętrzne tabela dwóch pierwszych 20 znaków każdej kolumna tekstu w tabelach t1 i t2.Ponadto inna możliwość porównywania ntext lub text kolumny z dwóch tabel jest porównanie długości kolumny za pomocą klauzula WHERE, na przykład: WHERE DATALENGTH(p1.pr_info) = DATALENGTH(p2.pr_info)