2010-11-05 24 views

Respuesta

22

La tabla izquierda es la primera tabla en la selección. Sí, tus dos ejemplos son equivalentes.

3

ver esto por un muy buen tutorial sobre une: http://en.wikipedia.org/wiki/Join_(SQL)

Y sí, ambas afirmaciones son equivalentes :-)

+0

esa URL apunta actualmente a example.com ... –

+1

@djacobson: Gracias, corregido. ¡Nada es tan grave que no se pueda estropear! –

+2

Smiple, ¿eh? * De hecho. * :) –

1

Sí, está determinada por el lado del operador unirse a los la tabla aparece en. Sus dos ejemplos son de hecho equivalentes.

+0

Tu respuesta parece contradecirse a sí misma. Usted dice que la posición relativa al operador es lo que determina qué tabla es la izquierda y la derecha, pero en mi ejemplo se intercambian y usted dice que son equivalentes. – Jake

+0

Lea atentamente, por favor: Dije la posición relativa al operador ** JOIN **, no al operador de igualdad. –

6

La tabla correcta es siempre la tabla a la que se está uniendo. Entonces sí, ambas declaraciones son equivalentes.

JOIN [Table] ON ... 

[Tabla] es siempre la tabla correcta.

3

Aproximadamente "izquierda" es el resultado de todo lo que aparece primero en la cláusula FROM completa al leer de izquierda a derecha, incluido el resultado de otras JOIN, subconsultas, VIEW y PROCEDIMIENTOS ALMACENADOS. El orden de las tablas en la parte ON de la cláusula JOIN es irrelevante, por lo que ambas sentencias SQL son equivalentes.

La unión regular muestra solo las líneas donde la cláusula ON de JOIN es verdadera, mientras que LEFT JOIN muestra también los registros de "izquierda" si la condición es falsa (muestra NULL para cualquier columna de "right" presente en el SELECCIONADO).

Por ejemplo:

-- People:   -- Car 
id | name   owner_id | model 
---+------------  ---------+------------ 
1 | Paul   1  | Ferrari 
2 | Nancy   2  | Porsche 
3 | Arthur   NULL  | Lamborghini 
4 | Alfred   10  | Maserati 

> select people.name, car.model from people join car on car.owner_id=people.id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
2 record(s) found 

> select people.name, car.model from people left join car on 
    car.owner_id=people.id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
Arthur | NULL 
Alfred | NULL  
4 record(s) found 

> select people.name, car.model from people left join car on 
    people.id = car.owner_id; 

name  | model 
---------+-------------- 
Paul  | Ferrari 
Nancy | Porsche 
Arthur | NULL 
Alfred | NULL  
4 record(s) found 
+0

Esa no es la pregunta. –

Cuestiones relacionadas