Compartir a través de


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

Otros recursos

Especificar criterios de búsqueda