Google
 
Strona główna Darmowe programy, shareware Programowanie MS Excel Porady komputerowe Bazy danych Kontakt

Złączenia tabel w SQL Server




Zobacz ciekawe artykuły w języku angielskim: sql count  sql distinct  sql delete  sql group by  sql outer join  sql like  sql database backup 

Złączenia tabel w SQL Server

Bardzo często zdarza się, że projektowane bazy danych składają się z wielu powiązanych ze sobą tabel. W takich przypadkach wysoce proawdopodobne jest, że w aplikacji współpracującej z taką bazą będzie trzeba wykonać zapytanie SQL pobierające dane z wielu tabel jednocześnie. Aby wykonać to zadanie należy w wykonywanym zapytaniu użyć złączenia.



Rodzaje złączeń

Jeśli chcemy złączyć dwie tabele Tabela1 i Tabela2 w taki sposób aby w wyniku wykonania zapytania pokazywały się tylko te wiersze, które mają identyczne wartości w kolumnie, według której robimy złączenie to wtedy stosujemy złączenia wewnętrzne. Na przykład dla poniższych tabel:



Tabela bazy danychTabela bazy danych

zapytanie :

SELECT t1.id AS id1,t2.id AS id2 FROM Tabela1 t1 INNER JOIN Tabela t2 ON t1.id=t2.id;

zwróci następujący wynik:

wynik złączenia INNER JOIN


Jeśli chcemy aby w wynikowym zbiorze rekordów pojawiły się wszystkie rekordy z pierwszej tabeli i odpowiadające im rekordy z drugiej tabeli należy użyć innego typu złączenia. Dla tabel z poprzedniego przykładu zapytanie będzie miało postać

SELECT t1.id AS id1,t2.id AS id2 FROM Tabela1 t1 LEFT OUTER JOIN Tabela2 t2 ON t1.id=t2.id;

Zapytanie to zwróci następujący wynik:

wynik złączenia LEFT OUTER JOIN


Jeśli chcemy aby w wynikowym zbiorze rekordów pojawiły się wszystkie rekordy z drugiej tabeli i odpowiadające im rekordy z pierwszej tabeli należy wykonać analogiczne zapytanie jak w poprzednim przypadku:

SELECT t1.id AS id1,t2.id AS id2 FROM Tabela1 t1 RIGHT OUTER JOIN Tabela2 t2 ON t1.id=t2.id;

Zapytanie to zwróci następujący wynik:

wynik złączenia RIGHT OUTER JOIN


Aby w wyniiku złączenia uzyskać wszystkie rekordy z obydwu tabel należy użyć innego rodzaju złączenia.

SELECT t1.id AS id1,t2.id AS id2 FROM Tabela1 t1 FULL OUTER JOIN Tabela2 t2 ON t1.id=t2.id;

Zapytanie to dla naszych przykładowych tabel zwróci następujący wynik:

wynik złączenia FULL OUTER JOIN


Poprawienie wydajności zapytań zawierających złączenia

Aby poprawić wydajność zapytań zawierających złączenia można założyć indeksy na kolumnach, które uczestniczą w złączeniu. W naszym przypadku są to kolumny id w pierwszej i drugiej tabeli. Można także spróbować umieścić tabele Tabela1 i Tabela2 w różnych plikach na różnych dyskach fizycznych (oczywiście jeśli w systemie, w którym działa SQL Server są przynajmniej dwa dyski fizyczne).




 

Copyright © 2006-2010 programowaniePC.pl