2011-03-29 12 views

Respuesta

34

Una "combinación interna" no es lo mismo que una "combinación equitativa" en términos generales.

'equi-join' significa unir tablas usando el operador de igualdad o equivalente. Todavía llamaría a una combinación externa una 'combinación equitativa' si solo usa igualdad (otros pueden estar en desacuerdo).

'inner join' se opone a 'outer join' y determina cómo unir dos conjuntos cuando no hay un valor coincidente.

+1

Entonces, ¿no es EQJoin une interna? – UnKnown

19

Encontré este artículo sobre esto, supongo que responde a su pregunta.

No están relacionados.

Casi todos se unen es una combinación de igualdad, porque la condición para hacer coincidir filas se basa en la igualdad de dos valores: uno de cada una de las mesas que están unidos . Entonces eso es lo que lo hace una equijoin: la condición ON es igualdad. Esto incluye combinaciones internas y los tres tipos de uniones externas.

Uniones internas, por otro lado, pueden ser según la igualdad para unir filas, o en alguna otra condición completamente. Si es no una equijoin, entonces usualmente es llamado unión theta, aunque para ser preciso, una equijoin es solo una de las posibles uniones theta; otro theta se une a menos de, menos de igual, etc., como operador de comparación .

Read the whole article

7

la respuesta es no.

una equicombinación se utiliza para que coincida con dos columnas de dos tablas usando operador explícito =:

Ejemplo:

select * 
    from table T1, table2 T2 
    where T1.column_name1 = T2.column_name2 

una combinación interna se utiliza para obtener la cruz producto entre dos tablas, combinando todos los registros de ambas tablas. Para obtener el derecho de Resultados se puede utilizar una combinación de igualdad o uno unen naturales (nombres de columna entre las tablas deben ser los mismos)

Usando equicombinación (explícitos e implícitos)

select * 
    from table T1 INNER JOIN table2 T2 
    on T1.column_name = T2.column_name 

select * 
    from table T1, table2 T2 
    where T1.column_name = T2.column_name 

o el uso de reunión natural

select * 
    from table T1 NATURAL JOIN table2 T2 

HTH

1

Si tiene que salir hecho una diferencia, entonces, creo que aquí está .I probó con DB2. En 'equi join', debe seleccionar la columna de comparación de la tabla que se va a unir, en la combinación interna no es obligatorio hacerlo.Ejemplo: -

Select k.id,k.name FROM customer k 
inner join dealer on(
k.id =dealer.id 
) 

aquí las filas resultantes son sólo dos columnas de las filas

id name 

pero creo que en equi unirse a usted tiene que seleccionar las columnas de otra mesa también

Select k.id,k.name,d.id FROM customer k,dealer d 
where 
k.id =d.id 

y esto dará como resultado filas con tres columnas, no hay forma de que no pueda tener la columna de distribuidores no deseados aquí (incluso si no la quiere), las filas se verán como

id(from customer) name(from Customer) id(from dealer) 

Puede ser que esto no sea cierto para su pregunta. Pero podría ser una de las principales diferencias.

+0

¿Qué quiere decir con columna comparada no deseada? Si no selecciona 'd.id' en EqJoin, entonces también funcionará. – UnKnown

2

En pocas palabras: una equicombinación es un tipo posible de interior-une

Para una explicación más en profundidad:

un centro de la unión es una unión que devuelve sólo las filas de tablas unidas donde se cumple una cierta condición. Esta condición puede ser de igualdad, lo que significa que tendríamos un equi-join; si la condición no es la igualdad, que puede ser una falta de igualdad, mayor que, menor que, entre, etc., tenemos un nonequi-join, llamado con mayor precisión theta-join.

Si no queremos que tales condiciones que deben necesariamente cumplirse, podemos tener une exterior (todas las filas de todas las tablas devueltas), Izquierda unirse a (todas las filas de la tabla de la izquierda, aparecerán sólo juego de mesa de la derecha), a la derecha join (todas las filas de la tabla derecha devueltas, solo coinciden para la tabla de la izquierda).

+0

¿por qué esta respuesta fue rechazada? – Eddy

+0

no sé ... ¿malos perdedores? ¿competencia? – Katuiros

0

La respuesta es No, este es el tipo y simple para los lectores.

combinación interna puede tener igualdad (=) y otros operadores (como <,>,> <) en la condición de unión.

Equi join solo tienen el operador de igualdad (=) en la condición de unión.

Equi unirse puede haber una combinación interna, Unión externa izquierda, derecha Combinación externa

-1

La respuesta es sí, pero como un conjunto de resultados. Entonces aquí hay un ejemplo.

considerar tres tablas:

órdenes (ord_no, purch_amt, ord_date, customer_id, salesman_id)

cliente (customer_id, cust_name, la ciudad, el grado, salesman_id)

vendedor (salesman_id, nombre, ciudad, comisión)

Ahora si tengo una consulta como esta:

Encuentra el deta ils de una orden.

El uso de combinación interna:

SELECT * FROM orders a INNER JOIN customer b ON a.customer_id=b.customer_id 
INNER JOIN salesman c ON a.salesman_id=c.salesman_id; 

Usando EQUI JOIN:

SELECT * FROM orders a, customer b,salesman c where 
a.customer_id=b.customer_id and a.salesman_id=c.salesman_id; 

Ejecutar ambas consultas. Obtendrá el mismo resultado.

Haciendo su pregunta No hay diferencia en la salida de equijoin y unión interna. Pero puede haber una diferencia en las ejecuciones internas de ambos tipos.

Cuestiones relacionadas