SQL - FULL JOIN Izjave


Korištenje potpunih pridruživanja

FULL JOIN vraća sve redove iz spojenih tabela, bez obzira da li se podudaraju ili ne, tj. Možete reći da potpuno pridruživanje kombinuje funkcije LEFT JOIN i RIGHT JOIN. Potpuno spajanje je vrsta vanjskog spajanja, zbog čega se naziva i potpuno vanjsko spajanje. Sljedeći Venov dijagram ilustruje kako funkcioniše potpuno spajanje.



Da bismo to jasno razumjeli, pogledajmo sljedeće tabele zaposlenih i odjela.



Recimo da sada želite samo dohvatiti imena svih zaposlenih i imena dostupnih odjeljenja, bez obzira imaju li odgovarajuće redove u drugoj tabeli, u tom slučaju možete koristiti potpuno pridruživanje kao što je prikazano u nastavku. Sljedeća izjava dohvata sve odjele kao i detalje svih zaposlenih spajanjem tabele zaposlenika i odjela koristeći zajedničko polje dept_id.

SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name
FROM employees AS t1 FULL JOIN departments AS t2
ON t1.dept_id = t2.dept_id ORDER BY emp_name;

Neke baze podataka, poput Oracle, MySQL, ne podržavaju potpuna spajanja. U tom slučaju možete koristiti operater UNION ALL za kombinovanje LIJEVOG I DESNOG PRIDRUŽIVANJA na sljedeći način:

SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name
FROM employees AS t1 LEFT JOIN departments AS t2
ON t1.dept_id = t2.dept_id
UNION ALL
SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name
FROM employees AS t1 RIGHT JOIN departments AS t2
ON t1.dept_id = t2.dept_id ORDER BY emp_name;

Nakon izvršavanja gornje naredbe, dobit ćete izlaz otprilike ovako: