Utilizar una tabla dos veces en una consulta
Puede utilizar la misma tabla dos (o más) veces en una sola consulta. Existen varias situaciones en las que puede realizar esta acción.
Crear una autocombinación con una relación reflexiva Puede combinar una tabla consigo misma mediante el uso de una relación reflexiva: una relación en la que las columnas de clave externa que hacen referencia y las columnas de clave principal a las que se hace referencia estén en la misma tabla. Por ejemplo, supongamos que la tabla de empleados (employee) contiene una columna adicional (employee.manager_emp_id) y que existe una clave externa de manager_emp_id a employee.emp_id. De esa forma, en cada fila de la tabla employee, la columna manager_emp_id se referirá al jefe de cada empleado. Por ser más exactos, se referirá al emp_id del jefe del empleado.
Mediante la combinación de la tabla consigo misma por medio de esta relación reflexiva, puede establecer un conjunto de resultados en el que cada fila contenga el nombre de un jefe y el nombre de uno de los empleados de ese jefe. El código SQL resultante puede presentar el siguiente aspecto:
SELECT boss.lname, boss.fname, employee.lname, employee.fname FROM employee INNER JOIN employee boss ON employee.manager_emp_id = boss.emp_id
Para obtener más información sobre cómo crear combinaciones utilizando relaciones reflexivas, vea Cómo: Crear autocombinaciones automáticamente.
Crear una autocombinación sin una relación reflexiva Puede combinar una tabla consigo misma sin utilizar una relación reflexiva. Por ejemplo, puede establecer un conjunto de resultados en el que cada fila describa a un empleado y a un mentor potencial de ese empleado (Un mentor potencial es un empleado con un nivel de trabajo superior). El código SQL resultante puede presentar el siguiente aspecto:
SELECT employee.fname, employee.lname, mentor.fname, mentor.lname FROM employee INNER JOIN employee mentor ON employee.job_lvl < mentor.job_lvl
Tenga en cuenta que la combinación utiliza una condición que no es la de igualdad. Para obtener más información sobre cómo combinar tablas mediante el uso de condiciones que no sean la de igualdad, vea Operadores de comparación en una combinación.
Para obtener más información acerca de cómo crear autocombinaciones utilizando columnas no relacionadas, vea Cómo: Crear autocombinaciones manualmente.
Utilizar una tabla dos veces sin una autocombinación Incluso sin una autocombinación, puede utilizar la misma tabla dos veces (o más) en una consulta. Por ejemplo, puede establecer un conjunto de resultados que contenga los demás libros del autor o autores de su libro favorito. En este caso, puede utilizar la tabla titleauthors (autores) dos veces: una para buscar los autores de su libro favorito (Is Anger the Enemy?) y otra para buscar los demás libros de esos autores. El código SQL resultante puede presentar el siguiente aspecto:
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
Nota
Para distinguir entre los múltiples usos que puede tener cualquier tabla, la consulta precedente utiliza los siguientes alias: favorite_title, favorite_titleauthor, other_titleauthor y other_title. Para obtener más información sobre los alias, vea Cómo: Crear alias de tabla
Vea también
Conceptos
Trabajar con datos en el panel de resultados