Podsumowanie: w tym samouczku dowiesz się o klauzuli SQL Server LEFT JOIN I jak jej używać do zapytań o dane z wielu tabel.

Wprowadzenie do SQL Server LEFT JOIN klauzula

klauzulaLEFT JOIN umożliwia odpytywanie danych z wielu tabel. Zwraca wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli. Jeśli nie znaleziono pasujących wierszy w prawej tabeli, używane są NULL.,

poniżej przedstawiono sposób łączenia dwóch tabel T1 i T2 przy użyciu klauzuli LEFT JOIN:

Code language: SQL (Structured Query Language) (sql)

w tej składni T1 i T2 są odpowiednio lewą i prawą tabelą.

dla każdego wiersza tabeli T1 zapytanie porównuje go ze wszystkimi wierszami tabeli T2. Jeśli para wierszy spowoduje, że predykat join zostanie oceniony do TRUE, wartości kolumn z tych wierszy zostaną połączone, tworząc nowy wiersz, który następnie zostanie włączony do zestawu wyników.,

Jeśli wiersz z lewej tabeli (T1) nie ma pasującego wiersza z tabeli T2, zapytanie łączy wartości kolumn z lewej tabeli z NULL dla każdej wartości kolumny z prawej tabeli.

w skrócie,LEFT JOIN klauzula zwraca wszystkie wiersze z lewej tabeli (T1) i pasujące wiersze lubNULL wartości z prawej tabeli (T2).

poniżej przedstawiono LEFT JOIN dwóch tabel T1(1, 2, 3) i T2(A, B, C)., LEFT JOIN dopasuje wiersze z tabeli T1 do wierszy z tabeli T2 za pomocą wzorców:

na tej ilustracji żaden wiersz z tabeli T2 nie pasuje wiersz 1 z tabeli T1 stosuje się zatem null. Wiersze 2 i 3 z tabeli T1 pasują odpowiednio do wierszy A i B z tabeli T2.,

SQL Server LEFT JOIN przykład

zobacz następujące products I order_items tabele:

każdy element zamówienia obejmuje jeden produkt. Połączenie między order_items a products tabel jest product_id kolumna.,

poniższe polecenie używa klauzuli LEFT JOIN do zapytania danych z tabel products I order_items:

jak widać wyraźnie z zestawu wyników, lista NULL w kolumnie order_id wskazuje, że odpowiednie produkty nie zostały jeszcze sprzedane żadnemu klientowi.

można użyć klauzuliWHERE, aby ograniczyć zestaw wyników., Poniższe zapytanie zwraca produkty, które nie pojawiają się w żadnym zamówieniu sprzedaży:

jak zawsze, SQL Server przetwarza klauzulę WHERE po LEFT JOIN ,

The following example shows how to join three tables: production.products, sales.orders, and sales.order_items using the LEFT JOIN clauses:

Here is the output:

SQL Server LEFT JOIN: conditions in ON vs., Gdzie klauzula

następujące zapytanie znajduje produkty, które należą do ID zamówienia 100:

przenieśmy warunek order_id = 100 do ON klauzula:

zapytanie zwróciło wszystkie produkty, ale tylko zamówienie o ID 100 zawiera powiązane informacje o produkcie.,

zauważ, że dla klauzuliINNER JOIN warunek w klauzuliON jest funkcjonalnie równoważny, jeśli jest umieszczony w klauzuliWHERE.

w tym samouczku nauczyłeś się używać klauzuli SQL Server LEFT JOIN do pobierania danych z wielu powiązanych tabel.