Crear Self-Joins manualmente (Visual Database Tools)
se aplica a:sql Server
Puede unir una tabla consigo misma incluso si la tabla no tiene una relación reflexiva en la base de datos. Por ejemplo, puede usar una autounión para encontrar pares de autores que viven en la misma ciudad.
Al igual que con cualquier combinación, una autocombinación requiere al menos dos tablas. La diferencia es que, en lugar de agregar una segunda tabla a la consulta, se agrega una segunda instancia de la misma tabla. De este modo, puede comparar una columna en la primera instancia de la tabla con la misma columna de la segunda instancia, lo que le permite comparar los valores de una columna entre sí. El Diseñador de consultas y vistas asigna un alias a la segunda instancia de la tabla.
Por ejemplo, si estás creando una autocombinación para encontrar todos los pares de autores en Berkeley, comparas la columna city
en la primera instancia de la tabla con la columna city
de la segunda instancia. La consulta resultante podría ser similar a la siguiente:
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
WHERE
authors.city = 'Berkeley'
Crear una autocombinación a menudo requiere varias condiciones de combinación. Para comprender por qué, considere el resultado de la consulta anterior:
Cheryl Carson Cheryl Carson
Abraham Bennet Abraham Bennet
Cheryl Carson Abraham Bennet
Abraham Bennet Cheryl Carson
La primera fila es inútil; indica que Cheryl Carson vive en la misma ciudad que Cheryl Carson. La segunda fila es igualmente inútil. Para eliminar estos datos inútiles, agregue otra condición que conserve solo las filas de resultados en las que los dos nombres de autor describen distintos autores. La consulta resultante podría tener este aspecto:
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
AND authors.au_id
<> authors1.au_id
WHERE
authors.city = 'Berkeley'
El conjunto de resultados se ha mejorado:
Cheryl Carson Abraham Bennet
Abraham Bennet Cheryl Carson
Pero las dos filas de resultado son redundantes. El primero dice que Carson vive en la misma ciudad que Bennet, y el segundo dice que Bennet vive en la misma ciudad que Carson. Para eliminar esta redundancia, puede modificar la segunda condición de combinación de "no es igual a" a "menor que". La consulta resultante podría tener este aspecto:
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
AND authors.au_id
< authors1.au_id
WHERE
authors.city = 'Berkeley'
Y el conjunto de resultados tiene este aspecto:
Cheryl Carson Abraham Bennet
Para crear una autocombinación manualmente
Agregue la tabla o el objeto con valor de tabla con el que desea trabajar al panel Diagrama de .
Vuelva a agregar la misma tabla para que el panel Diagrama muestre la misma tabla o objeto con valores de tabla dos veces en el panel Diagrama.
El Diseñador de consultas y vistas asigna un alias a la segunda instancia agregando un número secuencial al nombre de la tabla. Además, el Diseñador de consultas y vistas crea una línea de combinación entre las dos apariciones de la tabla o el objeto con valores de tabla dentro del panel Diagrama.
Haga clic con el botón derecho en la línea de combinación y elija Propiedades en el menú contextual.
En la ventana Propiedades, haga clic en Condición de combinación y Tipo, y haga clic en los puntos suspensivos (...) a la derecha de la propiedad.
En el cuadro de diálogo Combinar, cambie el operador de comparación entre las claves principales según sea necesario. Por ejemplo, puedes cambiar el operador a menor que (<).
Cree la condición de combinación adicional (por ejemplo, authors.zip = authors1.zip) arrastrando el nombre de la columna de combinación principal en la primera aparición de la tabla o el objeto con valores de tabla y colocándolo en la columna correspondiente en la segunda aparición.
Especifique otras opciones para la consulta, como columnas de salida, condiciones de búsqueda y criterio de ordenación.
Consulte también
Crear Self-Joins automáticamente (Visual Database Tools)
Consulta con Combinaciones (Visual Database Tools)