Professional Documents
Culture Documents
SELECT *
FROM [existencias cero],[pedidos 90]
Obtenemos la siguiente tabla:
Se observa que tenemos las dos filas de la primera consulta combinadas con las dos filas de
la segunda.
Esta operacin no es de las ms utilizadas, normalmente cuando queremos componer
dos tablas es para aadir a las filas de una tabla, una fila de la otra tabla, por ejemplo
aadir a los pedidos los datos del cliente correspondiente, o los datos del
representante, esto equivaldra a un producto cartesiano con una seleccin de filas:
SELECT *
FROM pedidos,clientes
WHERE pedidos.clie=clientes.numclie
Combinamos todos los pedidos con todos los clientes pero luego seleccionamos los que
cumplan que el cdigo de cliente de la tabla de pedidos sea igual al cdigo de cliente de la
tabla de clientes, por lo tanto nos quedamos con los pedidos combinados con los datos del
cliente correspondiente.
Las columnas que aparecen en la clusula WHERE de nuestra consulta anterior se
denominan columnas de emparejamiento ya que permiten emparejar las filas de las dos
tablas. Las columnas de emparejamiento no tienen por qu estar incluidas en la lista de
seleccin.
Normalmente emparejamos tablas que estn relacionadas entre s y una de las columnas de
emparejamiento es clave principal, pues en este caso, cuando una de las columnas de
emparejamiento tienen un ndice definido es ms eficiente utilizar otro tipo de composicin,
el INNER JOIN.
EJEMPLO
Ejemplo de producto cartesiano
El producto cartesiano de las relaciones DESPACHOS y EDIFICIOS_EMP del ejemplo se
puede hacer como se indica (es necesario redenominar atributos previamente):
EDIFICIOS(nombreedificio, supmediadesp) := EDICIOS_EMP(edificio,
supmediadesp).
R := EDIFICIOS x DESPACHOS.
Entonces, la relacin R resultante ser:
Conviene sealar que el producto cartesiano es una operacin que raramente se utiliza de
forma explcita, porque el resultado que da no suele ser til para resolver las consultas
habituales.
A pesar de ello, el producto cartesiano se incluye en el lgebra relacional porque es una
operacin primitiva; a partir de la cual se define otra operacin del lgebra, la combinacin,
que se utiliza con mucha frecuencia.
EJEMPLO
Producto cartesiano X
Dados
B C D
A B
2 5 6
1 2
4 7 8
3 4
9 10 11
R
S
A R.B S.B C D
1 2 2 5 6
1 2 4 7 8
1 2 9 10 11
3 4 2 5 6
3 4 4 7 8
3 4 9 10 11
RXS
A R.B S.B C D
1 2 2 5 6
1 2 4 7 8
1 2 9 10 11
3 4 2 5 6
3 4 4 7 8
3 4 9 10 11
A B C D
1 2 5 6
3 4 7 8
R |X| S
El INNER JOIN
El INNER JOIN es otro tipo de composicin de tablas, permite emparejar filas de distintas
tablas de forma ms eficiente que con el producto cartesiano cuando una de las columnas de
emparejamiento est indexada. Ya que en vez de hacer el producto cartesiano completo y
luego seleccionar la filas que cumplen la condicin de emparejamiento, para cada fila de una
de las tablas busca directamente en la otra tabla las filas que cumplen la condicin, con lo
cual se emparejan slo las filas que luego aparecen en el resultado.
La sintaxis es la siguiente:
Ejemplo:
SELECT *
tabla1 y tabla2 son especificaciones de tabla (nombre de tabla con alias o no, nombre de
consulta guardada), de las tablas cuyos registros se van a combinar.
Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos un alias de
tabla.
Observar que dentro de la clusula ON los nombres de columna deben ser nombres
cualificados (llevan delante el nombre de la tabla y un punto).
Las columnas de emparejamiento deben contener la misma clase de datos, las dos de tipo
texto, de tipo fecha etc... los campos numricos deben ser de tipos similares. Por ejemplo, se
puede combinar campos AutoNumrico y Long puesto que son tipos similares, sin embargo,
no se puede combinar campos de tipo Simple y Doble. Adems las columnas no pueden ser
de tipo Memo ni OLE.
comp representa cualquier operador de comparacin ( =, <, >, <=, >=, o <> ) y se utiliza para
establecer la condicin de emparejamiento.
Se pueden definir varias condiciones de emparejamiento unidas por los operadores AND y
OR poniendo cada condicin entre parntesis. Ejemplo:
SELECT *
En este caso hay que sustituir en la sintaxis una tabla por un INNER JOIN completo.
Por ejemplo:
SELECT *
En vez de tabla1 hemos escrito un INNER JOIN completo, tambin podemos escribir:
SELECT *
OPERADORES DERIVADOS
Los operadores derivados son aquellos que se pueden expresar siempre en funcin de
operadores primitivos, pero su introduccin tiene por fin la simplificacin de las consultas.
Combinacin o join
La combinacin de dos relaciones respecto de sus columnas d y k es otra relacin constituida
por todos los pares de tuplas concatenadas, tales que, en cada par, las columnas d y k de las
correspondientes tuplas satisfacen la condicin especificada. Si la condicin es de igualdad
se denomina combinacin por igualdad (tambin se denomina equijoin o join).
Los operadores derivados son aquellos que se pueden expresar siempre en funcin de
operadores primitivos, pero su introduccin tiene por fin la simplificacin de las consultas.
DIVISIN (:)
La divisin de dos relaciones es otra relacin cuya extensin estar constituida por las tuplas
que al completarse con las tuplas de la segunda relacin permiten obtener la primera.
Formalmente: Sean dos relaciones con esquemas R y R, la divisin de ambos, denotada R :
R ser una relacin de grado n-n cuyo esquema estar formado por los n-n atributos A -
A es decir: (Ai:Di,...,An-n:Dn-n)
y cuya extensin ser: < vi1,...,vi(n-n) > / < vi(n-n+1),..., vin > r < vi1,...,vi(n-n) , vi(n-
n+1),..., vin >
AUTOR
AUTOR : EDITORIAL (saber los autores que han publicado en Addison y Rama)
NOMBRE NACIONALIDAD
De Miguel Espaola
EDITORIAL
EDITORIAL
Addison
Rama
Divisin
Sean
A B C D
a b c d
a b e f C D
b c e f c d
e d c d e f
e d e f
S
a b d e
A B
a b
e d
R/S
AUTOR
LIBROS
http://equipo22compu.blogspot.com/2012/06/operadores-derivados.html
https://www.fing.edu.uy/tecnoinf/mvd/cursos/bd2/material/teo/bd2-teorico01.pdf
http://guillerendon.blogspot.com/2012/03/142-operadores-derivados.html
http://ict.udlap.mx/people/carlos/is341/bases04.html