SQL JOIN łączy jedną lub więcej niż jedną tabelę na podstawie ich relacji. SQL JOIN obejmuje tabelę nadrzędną i relację tabeli podrzędnej.
Istnieją różne typy SQL JOINS:
- Łączenie wewnętrzne
- Lewe złącze zewnętrzne
- Prawe złącze zewnętrzne
- Pełne połączenie zewnętrzne
- Połączenie krzyżowe.
Zrozummy każdy typ złączeń SQL za pomocą przykładów.
Łączenie wewnętrzne
Złączenie wewnętrzne w SQL jest powszechnie używane. Pobrał wszystkie rekordy z obu tabel, dopóki warunek nie został spełniony. Oznacza to, że to połączenie zwróci tylko te wiersze, które są wspólne w obu tabelach.
Składnia wewnętrznego łączenia SQL:
SELECT Nazwa_tabeli1.Nazwa_kolumny1, Nazwa_tabeli1.Nazwa_kolumny2, Nazwa_tabeli1.Nazwa_kolumny3,Nazwa_tabeli2.Nazwa_kolumny1,Nazwa_tabeli2.Nazwa_kolumny2,Nazwa_Tabeli2.Nazwa_kolumny3, FROM_Nazwa_tabeli1 INNER JOIN =nNazwa_tabeli2Nazwa_tabeli2Nazwa_kolumny2.Weź pod uwagę już istniejące tabele, które zawierają określone dane:
Tabela 1:Pracownicy
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | WYROCZNIA | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACI | SHARMA | 55500 | CZANDIGAR | WYROCZNIA | 1 |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAJ | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAJ | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 |
4002 | ASHWINI | TORBA | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | WYROCZNIA | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOWANIE | 4 |
Tabela 2:Menedżer
Identyfikator menedżera | nazwa_menedżera | manager_department |
1 | Snehdeep Kaur | WYROCZNIA |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTOWANIE |
5 | Akasz Kadam | C# |
Tabela 3:Laptop:
LAPTOPID | NAZWA | ID PRACOWNIKA |
L101 | DELL | NULL |
L102 | HP | 1002 |
L103 | LENOVO | NULL |
L104 | HP | 3003 |
L105 | DELL | 4002 |
L106 | LENOVO | 4003 |
L107 | DELL | 5001 |
L108 | HP | NULL |
L109 | DELL | NULL |
L110 | HP | NULL |
Przykłady wewnętrznego łączenia SQL
Przykład 1: Wykonaj zapytanie, aby dołączyć do tabeli pracownika i tabeli menedżera i wyświetlić szczegóły pracowników, takie jak identyfikator pracownika, imię i nazwisko pracownika, wynagrodzenie z tabeli pracownika oraz identyfikator i nazwisko menedżera z tabeli menedżera.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGER_NAME OD PRACOWNIKÓW E WEWNĘTRZNY DOŁĄCZ DO MENEDŻERA M ON E.MANAGERID =M.MANAGERID;
W powyższym zapytaniu pobraliśmy id pracownika, imię, nazwisko, pensję z tabeli pracownika oraz id menedżera, nazwisko menedżera z tabeli menedżerów, gdzie kolumna identyfikator menedżera tabeli pracowników jest równa kolumnie identyfikator menedżera tabeli menedżera. Zapytanie zwróci wszystkie pasujące rekordy z obu tabel. Identyfikator menedżera to wspólna kolumna między obiema tabelami. E to alias tabeli pracownika, a M tabeli menedżera. Pole identyfikatora kierownika jest umieszczane jako klucz obcy w tabeli pracowników. Identyfikator menedżera działa jako klucz podstawowy w tabeli menedżera, co tworzy relację rodzic-dziecko między dwiema tabelami.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | IDENTYFIKATOR KIEROWCY | MANAGER_NAME |
1001 | VAIBHAVI | MISHRA | 65500 | 1 | Sneedeep Kaur |
2001 | PRACI | SHARMA | 55500 | 1 | Sneedeep Kaur |
4003 | RUCHIKA | AGARWAL | 60000 | 1 | Sneedeep Kaur |
1003 | NIKHIL | VANI | 50500 | 2 | Kirti kirtane |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | 2 | Kirti kirtane |
3002 | ANUJA | WANRE | 50500 | 2 | Kirti kirtane |
3001 | PRANOTI | SHENDE | 55500 | 3 | Abhishek Manish |
3003 | DEEPAM | JAUHARI | 58500 | 3 | Abhishek Manish |
4002 | ASHWINI | TORBA | 54500 | 3 | Abhishek Manish |
4001 | RAJESH | GOUD | 60500 | 4 | Anupam Mishra |
5001 | ARCHIT | SHARMA | 55500 | 4 | Anupam Mishra |
1002 | VAIBHAV | SHARMA | 60000 | 5 | Akasz Kadam |
2003 | RUCHIKA | JAIN | 50000 | 4 | Akasz Kadam |
Rekordy są wyświetlane w kolejności rosnącej według identyfikatora menedżera.
Przykład 2: Wykonaj zapytanie, aby dołączyć do tabeli Employee Table i Manager i wyświetlić szczegółowe informacje o pracowniku, takie jak identyfikator pracownika, imię i nazwisko pracownika, wynagrodzenie z tabeli pracownika oraz identyfikator kierownika i dział kierownika z tabeli kierownika, w której wynagrodzenie pracownika jest większe niż 58000.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGER_DEPARTMENT FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE WHERE> 58000;>
W powyższym zapytaniu pobraliśmy identyfikator pracownika, imię, nazwisko, wynagrodzenie z tabeli pracownika, identyfikator kierownika i dział kierownika z tabeli kierownik, gdzie identyfikator kierownika z tabeli pracowników jest równy identyfikatorowi kierownika z kierownika podaj tylko te rekordy pracowników, których wynagrodzenie jest większe niż 58000.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | IDENTYFIKATOR KIEROWCY | MANAGER_DEPARTMENT |
1001 | VAIBHAVI | MISHRA | 65500 | 1 | WYROCZNIA |
4003 | RUCHIKA | AGARWAL | 60000 | 1 | WYROCZNIA |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | 2 | FMW |
3003 | DEEPAM | JAUHARI | 58500 | 3 | JAVA |
4001 | RAJESH | GOUD | 60500 | 4 | TESTOWANIE |
1002 | VAIBHAV | SHARMA | 60000 | 5 | C# |
Wyświetlanych jest tylko sześć rekordów, w których wynagrodzenie pracownika przekracza 58000.
Przykład 3: Wykonaj zapytanie, aby połączyć tabelę pracowników i tabelę laptopów, wyświetl szczegóły pracownika, takie jak identyfikator pracownika, imię i nazwisko pracownika oraz wynagrodzenie, miasto z tabeli pracownika, identyfikator laptopa i nazwa laptopa z tabeli laptop
WYBIERZ.ID PRACOWNIKA, IMIĘ.PIERWSZEGO_PRACY, WYNAGRODZENIE.PRACA, MIASTO, OKRĄG.LAPTOPID, OKR. NAZWA OD PRACOWNIKÓW EMP WEWNĘTRZNY DOŁĄCZ DO LAPTOPA OKRĄŻENIE NA EMP.EMPLOYEEID =LAP.EMPLOYEEID;
W powyższym zapytaniu pobraliśmy id pracownika, imię, wynagrodzenie, miasto z tabeli pracowników id laptopa oraz imię i nazwisko z tabeli laptop gdzie id pracownika z tabeli pracownik jest równe id pracownika z tabeli laptop. Identyfikator pracownika to klucz obcy w tabeli Laptop, który tworzy relację nadrzędny-podrzędny między tabelą Employee a tabelą Laptop.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | WYNAGRODZENIE | MIASTO | LAPTOPID | NAZWA |
1002 | VAIBHAV | 60000 | NOIDA | L102 | HP |
3003 | DEEPAM | 58500 | MUMBAJ | L104 | HP |
4002 | ASHWINI | 54500 | NOIDA | L105 | DELL |
4003 | RUCHIKA | 60000 | DELHI | L106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | L107 | DELL |
Wyświetlanych jest tylko pięć rekordów pracowników.
Przykład 4: Napisz zapytanie, aby wyświetlić identyfikator pracownika, imię, wynagrodzenie i dział z tabeli pracowników Identyfikator menedżera i nazwisko menedżera z tabeli menedżerów przy użyciu sprzężenia wewnętrznego, gdzie wynagrodzenie> 55000, a dział to Oracle.
WYBIERZ ID PRACOWNIKA, IMIĘ, WYNAGRODZENIE, DZIAŁ, M.MANAGERID, M.MANAGER_NAME FROM PRACOWNIKÓW E INNER JOIN MANAGER M ON E.MANAGERRID =M.MANAGERYD WHERE WYNAGRODZENIE> 55000 AND DZIAŁ ='ORACLE';
W powyższym przykładzie zapytania sprzężenia wyświetlamy szczegóły pracownika, takie jak identyfikator, imię i nazwisko, wynagrodzenie i dział z tabeli pracownika, identyfikator kierownika i nazwisko kierownika z tabeli kierownik, gdzie identyfikator kierownika z tabeli pracowników jest równy identyfikatorowi kierownika z kierownik tylko tych pracowników, których wynagrodzenie jest większe niż 55000, a działem jest Oracle.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | WYNAGRODZENIE | DZIAŁ | IDENTYFIKATOR KIEROWCY | MANAGER_NAME |
1001 | VAIBHAVI | 65500 | WYROCZNIA | 1 | Snehdeep Kaur |
2001 | PRACI | 55500 | WYROCZNIA | 1 | Snehdeep Kaur |
4003 | RUCHIKA | 60000 | WYROCZNIA | 1 | Snehdeep Kaur |
Tylko trzech pracowników, których wynagrodzenie przekracza 55000, a dział to Oracle.
Przykład 5: Wykonaj zapytanie sprzężenia w tabeli Pracownicy, Menedżer i Laptop i wyświetl szczegóły pracowników, identyfikator menedżera i identyfikator laptopa.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, M.MANAGERID, L.LAPTOPID OD PRACOWNIKÓW E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID INNER JOIN LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID;
Powyższe zapytanie wyświetla identyfikator pracownika, imię, nazwisko, identyfikator kierownika i identyfikator laptopa z tabel pracowników, kierownika i laptopa. Dołączamy do trzech stołów. Identyfikator pracownika to wspólna kolumna między pracownikami a tabelą laptop i tworzy relację nadrzędny-podrzędny między tymi trzema tabelami. Między pracownikami i menedżerami identyfikator menedżera tabeli jest wspólną kolumną.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | IDENTYFIKATOR KIEROWCY | LAPTOPID |
4003 | RUCHIKA | AGARWAL | 1 | L106 |
3003 | DEEPAM | JAUHARI | 3 | L104 |
4002 | ASHWINI | TORBA | 3 | L105 |
5001 | ARCHIT | SHARMA | 4 | L107 |
1002 | VAIBHAV | SHARMA | 5 | L102 |
Połączenie zewnętrzne lewe
Lewe sprzężenie zewnętrzne zwróci wszystkie rekordy tabeli po lewej stronie sprzężenia i pasujące rekordy tabeli po prawej stronie sprzężenia. Zestaw wyników zawiera wartość null dla rekordów, które nie są powszechne po prawej stronie.
Składnia lewego sprzężenia zewnętrznego:
SELECT Nazwa_tabeli1.Nazwa_kolumny1, Nazwa_tabeli1.Nazwa_kolumny2, Nazwa_tabeli1.Nazwa_kolumny3,Nazwa_tabeli2.Nazwa_kolumny1,Nazwa_tabeli2.Nazwa_kolumny2,Nazwa_Tabeli2.Nazwa_kolumny3, FROM Nazwa_tabeli1 NAZWA_TABELI 1 NAZWA_TABELI NAZWA_KOLUMNY1.Rozważ istniejące tabele, które mają następujące rekordy:
Tabela 1:Pracownicy
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | WYROCZNIA | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACI | SHARMA | 55500 | CZANDIGAR | WYROCZNIA | 1 |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAJ | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAJ | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 |
4002 | ASHWINI | TORBA | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | WYROCZNIA | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOWANIE | 4 |
Tabela 2:Menedżer
Identyfikator menedżera | nazwa_menedżera | manager_department |
1 | Snehdeep Kaur | WYROCZNIA |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTOWANIE |
5 | Akasz Kadam | C# |
Tabela 3:Laptop
LAPTOPID | NAZWA | ID PRACOWNIKA |
L101 | DELL | NULL |
L102 | HP | 1002 |
L103 | LENOVO | NULL |
L104 | HP | 3003 |
L105 | DELL | 4002 |
L106 | LENOVO | 4003 |
L107 | DELL | 5001 |
L108 | HP | NULL |
L109 | DELL | NULL |
L110 | HP | NULL |
Przykłady lewego połączenia zewnętrznego SQL
Przykład 1: Wykonaj lewe zapytanie sprzężenia zewnętrznego w tabeli pracowników i tabeli Laptop, gdzie wyświetlany jest identyfikator pracownika, imię i nazwisko pracownika oraz identyfikator laptopa.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME FROM PRACOWNIKÓW E LEWO ZEWNĘTRZNE DOŁĄCZ DO LAPTOPA L ON E.EMPLOYEEID =L.EMPLOYEEID;
W powyższym zapytaniu wyświetliliśmy identyfikator pracownika, imię, nazwisko z identyfikatora laptopa pracownika i nazwisko z tabeli laptopa i wykonaliśmy zapytanie z lewym zewnętrznym sprzężeniem dla tych dwóch tabel. Zapytanie zwróci wartości null po prawej stronie tabeli, jeśli wiersze między tabelami nie są podobne.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | LAPTOPID | NAZWA |
1001 | VAIBHAVI | MISHRA | NULL | NULL |
1002 | VAIBHAV | SHARMA | L102 | HP |
1003 | NIKHIL | VANI | NULL | NULL |
2001 | PRACI | SHARMA | NULL | NULL |
2002 | PRZYJMUJ SIĘ | JAIN | NULL | NULL |
2003 | RUCHIKA | JAIN | NULL | NULL |
3001 | PRANOTI | SHENDE | NULL | NULL |
3002 | ANUJA | WANRE | NULL | NULL |
3003 | DEEPAM | JAUHARI | L104 | HP |
4001 | RAJESH | GOUD | NULL | NULL |
4002 | ASHWINI | TORBA | L105 | DELL |
4003 | RUCHIKA | AGARWAL | L106 | LENOVO |
5001 | ARCHIT | SHARMA | L107 | DELL |
Przykład 2: Napisz zapytanie, aby pobrać identyfikator pracownika, imię, nazwisko, wynagrodzenie z tabeli pracownika, lewe sprzężenie zewnętrzne na stoliku laptopa, gdzie wynagrodzenie> 55000.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME FROM PRACOWNIKÓW E LEWO ZEWNĘTRZNY DOŁĄCZ DO LAPTOP L ON E.EMPLOYEEID =L.PRACOWNIK GDZIE WYNAGRODZENIE> 55000;
W powyższym zapytaniu pobraliśmy szczegóły pracownika z tabeli pracowników i szczegóły laptopa z tabeli laptop, ale tylko te szczegóły pracownika, dla których wynagrodzenie jest większe niż 55000. Dla tych dwóch tabel wykonaliśmy zapytanie z lewym zewnętrznym sprzężeniem. Zapytanie zwróci wartości null po prawej stronie tabeli, jeśli wiersze między tabelami nie są podobne.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | LAPTOPID | NAZWA |
1001 | VAIBHAVI | MISHRA | 65500 | NULL | NULL |
1002 | VAIBHAV | SHARMA | 60000 | L102 | HP |
2001 | PRACI | SHARMA | 55500 | NULL | NULL |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | NULL | NULL |
3001 | PRANOTI | SHENDE | 55500 | NULL | NULL |
3003 | DEEPAM | JAUHARI | 58500 | L104 | HP |
4001 | RAJESH | GOUD | 60500 | NULL | NULL |
4003 | RUCHIKA | AGARWAL | 60000 | L106 | LENOVO |
5001 | ARCHIT | SHARMA | 55500 | L107 | DELL |
Prawe połączenie zewnętrzne
Prawe sprzężenie zewnętrzne zwróci wszystkie rekordy tabeli po prawej stronie sprzężenia i pasujące rekordy tabeli po lewej stronie sprzężenia. Zestaw wyników zawiera wartość null dla rekordów, które nie są powszechne po lewej stronie.
Składnia prawego sprzężenia zewnętrznego:
SELECT Nazwa_tabeli1.Nazwa_kolumny1, Nazwa_tabeli1.Nazwa_kolumny2, Nazwa_tabeli1.Nazwa_kolumny3,Nazwa_tabeli2.Nazwa_kolumny1,Nazwa_tabeli2.Nazwa_kolumny2,Nazwa_Tabeli2.Nazwa_kolumny3, FROM Nazwa_tabeli1 PRAWO Nazwa_tabeli1.Nazwa_tabeli1.Nazwa_tabeli W PRAWO .Przykłady prawego połączenia zewnętrznego SQL
Przykład 1: Wykonaj zapytanie prawego sprzężenia zewnętrznego na tabeli pracowników i tabeli laptopa, gdzie wyświetlany jest identyfikator pracownika, imię i nazwisko pracowników.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME FROM PRACOWNIKÓW E Prawo OUTER JOIN LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID;W powyższym zapytaniu wyświetliliśmy identyfikator pracownika, imię, nazwisko z identyfikatora laptopa pracownika i nazwisko z tabeli laptopa i wykonaliśmy zapytanie prawego sprzężenia zewnętrznego na tych dwóch tabelach. Zapytanie zwróci wartości null po lewej stronie tabeli, jeśli wiersze między tabelami nie są podobne.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | LAPTOPID | NAZWA |
NULL | NULL | NULL | L101 | DELL |
1002 | VAIBHAV | SHARMA | L102 | HP |
NULL | NULL | NULL | L103 | LENOVO |
3003 | DEEPAM | JAUHARI | L104 | HP |
4002 | ASHWINI | TORBA | L105 | DELL |
4003 | RUCHIKA | AGARWAL | L106 | LENOVO |
5001 | ARCHIT | SHARMA | L107 | DELL |
NULL | NULL | NULL | L108 | HP |
NULL | NULL | NULL | L109 | DELL |
NULL | NULL | NULL | L110 | HP |
Przykład 2: Napisz zapytanie, aby pobrać identyfikator pracownika, imię i nazwisko z tabeli pracownika. Prawe złącze zewnętrzne na stole laptopa, gdzie nazwa laptopa zawiera jedną z list to Dell, HP.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME FROM EMPLOYEES E RIGHT OUTER JOIN LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID WHERE L.NAME IN (' DELL”, „HP”);
W powyższym zapytaniu wyświetliliśmy dane pracowników z tabeli pracownika szczegóły laptopa na stole laptopa. W przypadku tych dwóch tabel wykonaliśmy prawidłowe zapytanie dotyczące łączenia zewnętrznego tylko wtedy, gdy pracownik, którego nazwa laptopa zawiera jedną z list, to Dell i HP. Zapytanie zwróci wartości null po lewej stronie tabeli, jeśli wiersze między tabelami nie są podobne.
Wyjście:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | LAPTOPID | NAZWA |
NULL | NULL | NULL | L101 | DELL |
1002 | VAIBHAV | SHARMA | L102 | HP |
3003 | DEEPAM | JAUHARI | L104 | HP |
4002 | ASHWINI | TORBA | L105 | DELL |
5001 | ARCHIT | SHARMA | L107 | DELL |
NULL | NULL | NULL | L108 | HP |
NULL | NULL | NULL | L109 | DELL |
NULL | NULL | NULL | L110 | HP |
Pełne połączenie zewnętrzne
Full Outer Join scala wynik zarówno Left Outer Joins, jak i Right Outer Join. Pełne łączenie zewnętrzne jest takie samo jak łączenie krzyżowe. Full Outer Joins zwraca dane wyjściowe, w których wiersze między tabelami są wspólne lub rzadkie.
Składnia pełnego sprzężenia zewnętrznego:
WYBIERZ NAZWA KOLUMNY1, NAZWA KOLUMNY2 Z TABELI1 FULL JOIN TABLE2;
Przykład 1: Napisz zapytanie, aby wyświetlić identyfikator pracownika, imię, nazwisko z identyfikatora kierownika z tabeli pracownika pełne połączenie zewnętrzne Tabela kierownika, w której wynagrodzenie pracownika jest większe niż 65000.
WYBIERZ EMPLOYEEID, FIRST_NAME, LAST_NAME, M.MANAGERID OD PRACOWNIKÓW FULL JOIN MANAGER M WHERE PENSJONATY> 65000;
W powyższym zapytaniu wyświetliliśmy dane pracowników i dane menedżera z tabeli Pracownicy i menedżer, gdzie wynagrodzenie pracownika jest większe niż 65000 przy użyciu pełnego dołączenia. W pełni połącz każdy wiersz stołu pracownika w każdym wierszu stołu menedżera, tj. nastąpi iloczyn kartezjański. M * N
Wyjście:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | IDENTYFIKATOR KIEROWCY |
1001 | VAIBHAVI | MISHRA | 1 |
1001 | VAIBHAVI | MISHRA | 2 |
1001 | VAIBHAVI | MISHRA | 3 |
1001 | VAIBHAVI | MISHRA | 4 |
1001 | VAIBHAVI | MISHRA | 5 |
2002 | PRZYJMUJ SIĘ | JAIN | 1 |
2002 | PRZYJMUJ SIĘ | JAIN | 2 |
2002 | PRZYJMUJ SIĘ | JAIN | 3 |
2002 | PRZYJMUJ SIĘ | JAIN | 4 |
2002 | PRZYJMUJ SIĘ | JAIN | 5 |
Jak widać, identyfikator pracownika 1001 łączy się krzyżowo z każdym identyfikatorem kierownika, tak samo z identyfikatorem pracownika 2002.
Przykład 2: Wykonaj pełne zapytanie ze sprzężeniem zewnętrznym na tabeli pracowników i tabeli laptop, gdzie wynagrodzenie pracownika jest większe niż 60000, a lokalizacja pracownika to Pune.
WYBIERZ LAPTOPID, E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY FROM LAPTOP PEŁNA DOŁĄCZ DO PRACOWNIKÓW E WHERE WYNAGRODZENIE> 60000 I MIASTO ='PUNE';
W powyższym zapytaniu wyświetlamy identyfikator laptopa, identyfikator pracownika, imię, wynagrodzenie i miasto z pełnego laptopa dołączają do pracowników tylko tych, których wynagrodzenie jest większe niż 60000, a miasto to Pune. Jeśli oba warunki są zgodne dla tylko pracownika, rekord jest pobierany.
Wyjście:
Połączenie krzyżowe
Sprzężenia krzyżowe w SQL to nic innego jak produkt kartezjański. Każdy wiersz jednej tabeli jest łączony lub scalany z każdym wierszem drugiej tabeli. M * N jest krzyżem Dołącz
Składnia łączenia krzyżowego:
WYBIERZ NAZWA KOLUMNY1, NAZWA KOLUMNY2 Z TABELI1 POŁĄCZENIE KRZYŻOWE TABELA2;
Przykład 1: Napisz zapytanie, aby wykonać operację łączenia krzyżowego na tabeli pracowników i tabeli menedżerów, gdzie imię pracownika zaczyna się od A
WYBIERZ EMPLOYEEID, FIRST_NAME, M.MANAGERID Z PRACOWNIKÓW CROSS JOIN MANAGER M GDZIE FIRST_NAME LIKE 'A%';
W powyższym przykładzie zapytania z pełnym sprzężeniem zewnętrznym pobraliśmy dane pracownika i szczegóły menedżera z tabeli pracowników i menedżerów, ale tylko te rekordy, w których imię pracownika zaczyna się na literę „A”.
Wyjście:
Wynik pokazuje, że identyfikator pracownika jest sprzężeniem krzyżowym z każdym wierszem identyfikatora menedżera.
M * N Tutaj, M =3; identyfikator pracownika z tabel pracowników
N =5; identyfikator menedżera z tabeli menedżera 3 * 5 =15 wierszy.
Przykład 2: Napisz zapytanie, aby wykonać operację łączenia krzyżowego na stole laptopa i tabeli pracowników, gdzie wynagrodzenie pracownika jest większe niż 58000 i Bombaj.
WYBIERZ LAPTOPID, IMIĘ, E.EMPLOYEEID FROM LAPTOP CROSS DOŁĄCZ DO PRACOWNIKÓW E WHERE PENSJA> 58000 AND CITY ='MUMBAI';
W powyższym zapytaniu wyświetliliśmy identyfikator laptopa, imię i nazwisko oraz identyfikator pracownika z tabeli laptop, aby wykonać operację łączenia krzyżowego na tabeli pracowników, w której wynagrodzenie pracownika jest większe niż 58000, a miasto to Pune. Połączenie krzyżowe działa jak M * N.
Wyjście: