Usando uma tabela duas vezes em uma consulta
Você pode usar a mesma tabela duas (ou mais) vezes, de dentro de uma única consulta.Há várias situações em que você faz isso.
Criando uma auto-associação com uma relação reflexiva você pode associar uma tabela a mesma usando uma relação reflexiva — uma relação em que as colunas de chave externa de referência e colunas de chave primária referida estão na mesma tabela.Por exemplo, suponha que a tabela de funcionários contenha uma coluna adicional, gerente_funcionário_id_func e que exista uma chave externa de gerente_id_emp para funcionário.Dentro de cada linha da tabela de funcionários, a coluna gerente_id_emp indica o chefe do funcionário.Mais precisamente, ele indica a id_func do chefe do funcionário.
Associando a tabela a mesma usando esse relacionamento reflexivo, você pode estabelecer um conjunto de resultados no qual cada linha contém um nome de chefe e o nome de um dos funcionários desse chefe.O SQL resultante pode parecer com isso:
SELECT boss.lname, boss.fname, employee.lname, employee.fname FROM employee INNER JOIN employee boss ON employee.manager_emp_id = boss.emp_id
Para obter mais informações sobre como criar associações usando os relacionamentos reflexivas, consulte Como: criar auto-relações automaticamente.
Criando uma auto-associação sem uma relação reflexiva você pode associar uma tabela a mesmo sem usar um relacionamento reflexivo.Por exemplo, você pode estabelecer um conjunto de resultados no qual cada linha descreve um funcionário e um potencial Supervisor para aquele funcionário.(Um Supervisor é um funcionário com um nível maior de trabalho). O SQL resultante pode parecer com isso:
SELECT employee.fname, employee.lname, mentor.fname, mentor.lname FROM employee INNER JOIN employee mentor ON employee.job_lvl < mentor.job_lvl
Observe que a associação usa uma condição diferente da igualdade.Para obter mais informações sobre a associação de tabelas usando condições diferente da igualdade, consulte Operadores de comparação de ingressar em.
Para obter mais informações sobre a criação de auto-relações usando colunas não relacionadas, consulte Como: criar manualmente de auto-relações.
Usando uma tabela duas vezes sem uma auto-associação par sem uma auto-associação, você pode usar a mesma tabela duas vezes (ou mais) em uma consulta.Por exemplo, você pode estabelecer um conjunto de resultados que contém os outros livros do autor ou autores de seu livro favorito.Nesse caso, use a tabela AutoresTítulo duas vezes — uma vez para localizar os autores do seu livro favorito (É o inimigo de raiva?) e uma vez para localizar os outros livros daqueles autores.O SQL resultante pode parecer com isso:
SELECT other_title.title FROM titles favorite_title INNER JOIN titleauthor favorite_titleauthor ON favorite_title.title_id = favorite_titleauthor.title_id INNER JOIN authors ON favorite_titleauthor.au_id = authors.au_id INNER JOIN titleauthor other_titleauthor ON authors.au_id = other_titleauthor.au_id INNER JOIN titles other_title ON other_titleauthor.title_id = other_title.title_id WHERE favorite_title.title = 'Is Anger the Enemy?' AND favorite_title.title <> other_title.title
Observação Para distinguir entre os diversos usos de qualquer tabela, a consulta anterior usa os seguintes aliases: título_favorito, títuloautor_favorito, outros_títuloautor e outros_títulos.Para obter mais informações sobre aliases, consulte Como: criar Aliases de tabela.
Consulte também
Conceitos
Trabalhar com dados no painel de resultados