SQL   JOIN: recupera dati da + tabelle

theta joins: si ottengono con gli operatori relazionali

outer joins: si ottengono con gli operatori *= e =*


equijoin

SELECT cognome, nome, a.codcit, c.codice, c.nome
FROM anagrafica a, città c
WHERE a.codcit = c.codice


natural join

SELECT cognome, nome, c.nome FROM anagrafica a, città c
WHERE a.codcit = c.codice


join con altre condizioni

SELECT cognome, nome, c.nome FROM anagrafica a, città c
WHERE a.codcit = c.codice and età < 40


self-join

per esempio troviamo quelli che hanno lo stesso CAP:

SELECT a1.cognome, a1.nome, a2.cognome, a2.nome
FROM anagrafica a1, anagrafica a2
WHERE a1.città = "ROMA" and a1.CAP = a2.cap

per eliminare le righe doppie:

SELECT a1.cognome, a1.nome, a2.cognome, a2.nome
FROM anagrafica a1, anagrafica a2
WHERE a1.città = "ROMA" and a1.CAP = a2.cap and a1.id < a2.id

troviamo quelli che abitano nella stessa città di Fontana:

SELECT a1.cognome, a1.nome, a1.città
FROM anagrafica a1, anagrafica a2
WHERE a1.città = a2.città and a2.cognome = 'Fontana'


join non basati sull'uguaglianza


not-equal join

per esempio troviamo quelli che vivono nella stessa città, ma hanno età diversa

SELECT a1.cognome, a1.nome, a2.cognome, a2.nome
FROM anagrafica a1, anagrafica a2
WHERE a1.città = a2.città and a1.età <> a2.età


join su più tabelle


outer join


valori nulli