| Termin | Definicja |
|---|---|
| RIGHT JOIN | RIGHT JOIN to złączenie zwracające wszystkie wiersze tabeli prawej oraz dopasowane wiersze lewej, uzupełnione NULL przy braku dopasowania. RIGHT JOIN jako sposób łączenia danychRIGHT JOIN jest operacją stosowaną w języku SQL wtedy, gdy nadrzędne znaczenie ma kompletna zawartość tabeli umieszczonej po prawej stronie instrukcji JOIN. Wynik obejmuje wszystkie rekordy tej tabeli, nawet jeśli w tabeli lewej nie ma odpowiadającego im wpisu. Gdy relacja zostanie znaleziona, do wyniku trafiają dane z obu źródeł. Jeżeli dopasowania zabraknie, kolumny pochodzące z tabeli lewej otrzymują wartość NULL. Przykładowo można rozpatrywać tabelę Typowa konstrukcja wygląda następująco:
W tym przykładzie tabela RIGHT JOIN na tle innych złączeń SQLNajłatwiej zrozumieć RIGHT JOIN przez porównanie go z pozostałymi rodzajami złączeń. INNER JOIN zwraca tylko te wiersze, dla których warunek ON znajdzie odpowiednią parę po obu stronach. LEFT JOIN zachowuje wszystkie rekordy tabeli lewej, a brak danych po stronie prawej oznacza NULL w kolumnach prawej tabeli. RIGHT JOIN działa analogicznie, ale priorytet otrzymuje tabela prawa. W praktyce RIGHT JOIN jest logicznym odpowiednikiem LEFT JOIN po zamianie kolejności tabel. Poniższe zapytania mogą dać taki sam rezultat, o ile warunek połączenia zostanie odpowiednio przepisany:
Różnica dotyczy przede wszystkim czytelności zapytania i przyjętego sposobu opisu relacji. W wielu zespołach częściej spotyka się LEFT JOIN, ponieważ łatwiej zachować jeden schemat: tabela podstawowa jest zapisywana jako pierwsza, a tabela uzupełniająca po słowie JOIN. RIGHT JOIN pozostaje jednak poprawnym i użytecznym narzędziem, szczególnie podczas analizy gotowych zapytań, w których kolejność tabel wynika z wcześniejszego projektu. Nie należy mylić RIGHT JOIN z FULL OUTER JOIN. Pierwszy zachowuje wszystkie rekordy tylko z prawej tabeli oraz dopasowania z lewej. Drugi zachowuje również rekordy bez dopasowania z lewej strony. Jeżeli wymagane jest pokazanie pełnej listy elementów z obu źródeł, samo RIGHT JOIN może nie wystarczyć. Z kolei przy raporcie dotyczącym kompletności tabeli prawej jego działanie jest bardziej precyzyjne i zwykle łatwiejsze do interpretacji. RIGHT JOIN a typowe problemy z warunkiem ONNajczęstsze błędy wynikają z niewłaściwie określonego warunku łączenia. W relacji między tabelami powinny być porównywane kolumny opisujące ten sam związek, na przykład identyfikator działu z kluczem obcym działu. Połączenie kolumn o podobnych nazwach, lecz innym znaczeniu, może zwrócić pusty wynik dopasowania albo powielić rekordy w sposób trudny do zauważenia. Ważna jest także różnica między warunkiem ON i filtrem WHERE. Warunek ON określa, kiedy dwa rekordy są uznawane za powiązane. Filtr WHERE działa już na utworzonym wyniku. Przykład:
Jeżeli dział nie ma pracownika, kolumna
Warto zwrócić uwagę na powielanie wyników. Jeżeli jednej wartości po prawej stronie odpowiada wiele rekordów po lewej, wiersz tabeli prawej pojawi się wielokrotnie. Nie jest to błąd samego RIGHT JOIN, lecz konsekwencja relacji jeden-do-wielu. Przy podsumowaniach może być konieczne użycie RIGHT JOIN w raportach i praktycznych zapytaniachRIGHT JOIN przydaje się wszędzie tam, gdzie raport ma pokazać pełny katalog elementów referencyjnych. Tabelą prawą może być lista kategorii, lokalizacji, typów zgłoszeń, stanowisk albo statusów. Tabela lewa może zawierać zdarzenia, zamówienia, przypisania lub inne dane zależne. Dzięki temu można zauważyć wartości, dla których nie wystąpiło jeszcze żadne zdarzenie. Załóżmy, że istnieją tabele
Dla produktu bez pozycji zamówienia funkcja COUNT zwróci zero, jeżeli zliczana jest kolumna identyfikatora z tabeli lewej. Taki raport może służyć do weryfikacji kompletności oferty, wykrywania nieużywanych wpisów lub planowania dalszego porządkowania danych. Przed uruchomieniem zapytania warto sprawdzić typy kolumn uczestniczących w relacji, indeksy oraz ewentualne wartości NULL w kluczach. Brak indeksu nie zmienia znaczenia RIGHT JOIN, ale może wydłużyć wykonywanie zapytania przy większej liczbie rekordów. Przydatne jest także jawne wskazywanie kolumn zamiast używania RIGHT JOIN i moment zgłoszenia problemu z bazą danychNieprawidłowy wynik zapytania z RIGHT JOIN może wynikać z błędnej składni, niezgodnego schematu tabel, usuniętych relacji, niespójnych identyfikatorów albo zmian w aplikacji korzystającej z bazy. Do sygnałów ostrzegawczych należą brak rekordów, które powinny być zachowane, niespodziewane wartości NULL, wielokrotne powielanie tych samych danych oraz wyraźne spowolnienie raportów po modyfikacji zapytania. Przed przekazaniem sprawy do analizy warto zapisać pełną treść zapytania, komunikat błędu, nazwę używanego systemu bazodanowego oraz informację, od kiedy występuje problem. Przydatny bywa także prosty test na niewielkim, bezpiecznym wycinku danych. Nie powinno się natomiast usuwać tabel ani wykonywać masowych zmian bez kopii zapasowej i sprawdzenia zależności. W przypadku problemów ze sprzętem, na którym działa środowisko przechowujące dane, można zgłosić się do Warszawskiego Pogotowia Komputerowego 24/7, gdzie diagnoza laptopa jest bezpłatna. Warto wcześniej opisać objawy, sposób pojawiania się błędu oraz to, czy problem dotyczy samego zapytania, programu czy dostępu do danych. Tak przygotowane informacje ułatwiają rozdzielenie usterki sprzętowej od problemu wynikającego z konstrukcji RIGHT JOIN lub konfiguracji bazy. |