Introducción a las Base de Datos 4 - (1-2)

Consultas Avanzadas

Consultar Relacionadas

consultas de mas de una tabla

Es posible hacer consultas usando varias tablas en la misma sentencia SELECT.

Esto nos permite realizar otras dos operaciones de álgebra relacional: el producto cartesiano y la composición. Y la obtengo mencionando las dos tablas en una consulta sin ninguna restricción en la cláusula where.

El producto cartesiano de dos tablas son todas las combinaciones de todas las filas de las dos tablas. Usando una sentencia SELECT se hace proyectando todos los atributos de ambas tablas. Los nombres de las tablas se indican en la cláusula FROM separados con comas.

Ejemplo de producto cartesiano:
SELECT * FROM personas2, telefonos2;
La cantidad de registros resultantes va a ser el producto entre cantidad de registro de una
tabla y la cantidad de registros de la otra tabla.
Se puede comprobar la cantidad de registros de la consulta de la siguiente forma
SELECT count(*) FROM personas2, telefonos2;

Tupla: Conjunto de nombres de atributos relacionados.

La composición interna trata de un producto cartesiano restringido, las tuplas que se emparejan deben cumplir una determinada condición.
SELECT * FROM personas2, telefonos2
WHERE personas2.id=telefonos2.id;

Ejemplo:

Tabla Personas
Id Nombre Genero
1 Facundo Masculino
2 Andrea Femenino
3 Laura Femenino
4 Lorena Femenino
5 Gabriel Masculino

Tabla Teléfono
id Numero
1 4569798
2 4651232
3 5454655
4 2223333
5 8713256

Nota: En la tabla Personas el campo Id es clave primaria, y no puede tener valores repetidos. Pero en la tabla Telefonos el campo ID solo hace referencia a que persona pertenece el número de teléfono y si se permiten números repetidos.

Una persona puede tener ningún, uno o muchos números de teléfonos.
Este concepto se detalle en el capítulo siguiente y se denomina Clave Foránea.

Ejemplo de producto cartesiano:
SELECT * from Personas,Telefonos;

Resultado:
id Nombre Genero Id Numero
1 FacundoMasculino 1 4569798
1 Facundo Masculino 1 4651232
1 Facundo Masculino 2 5454655
1 Facundo Masculino 3 2223333
1 Facundo Masculino 5 8713256
2 Andrea Femenino 1 4569798
2 Andrea Femenino 1 4651232
2 Andrea Femenino 2 5454655
2 Andrea Femenino 3 2223333
2 Andrea Femenino 5 8713256
3 Laura Femenino 1 4569798
3 Laura Femenino 1 4651232
3 Laura Femenino 2 5454655
3 Laura Femenino 3 2223333
3 Laura Femenino 5 8713256
4 Lorena Femenino 1 4569798
4 Lorena Femenino 1 4651232
4 Lorena Femenino 2 5454655
4 Lorena Femenino 3 2223333
4 Lorena Femenino 5 8713256
5 Gabriel Masculino 1 4569798
5 Gabriel Masculino 1 4651232
5 Gabriel Masculino 2 5454655
5 Gabriel Masculino 3 2223333
5 Gabriel Masculino 5 8713256

Obtengo la combinación de todos los registros de la primera tabla con todos los registros de la segunda tabla.
Total 25 registros, se puede comprobar que son 25 registros realizando la siguiente consulta.
SELECT count(*) from Persona,Telefonos;

Ejemplo de Composición Interna:

Observando la tabla resultante del producto cartesiano, se puede ver que los registros válidos, son aquellos en que los valores de los campos ID son iguales.
SELECT * from Personas,Telefonos
WHERE Personas.Id=Telefonos.ID;

Resultado:
id Nombre Genero id Numero
1 Facundo Masculino 1 4569798
2 Facundo Masculino 1 4651232
3 Andrea Femenino 2 5454655
4 Laura Femenino 3 2223333
5 Gabriel Masculino 5 8713256



Publicar un comentario

0 Comentarios