Valores

Solo disponible en BuenasTareas
  • Páginas : 5 (1195 palabras )
  • Descarga(s) : 7
  • Publicado : 12 de agosto de 2009
Leer documento completo
Vista previa del texto
El producto cartesiano |

El producto cartesiano es un tipo de composición de tablas, aplicando el producto cartesiano a dos tablas se obtiene una tabla con las columnas de la primera tabla unidas a las columnas de la segunda tabla, y las filas de la tabla resultante son todas las posibles concatenaciones de filas de la primera tabla con filas de la segunda tabla.
La sintaxis es lasiguiente:   |

  |

El producto cartesiano se indica poniendo en la FROM las tablas que queremos componer separadas por comas, podemos obtener así el producto cartesiano de dos, tres, o más tablas. nbtabla puede ser un nombre de tabla o un nombre de consulta. Si todas las tablas están en una base de datos externa, añadiremos la cláusula IN basedatosexterna después de la última tabla. Pero para mejorarel rendimiento y facilitar el uso, se recomienda utilizar una tabla vinculada en lugar de la cláusula IN. Hay que tener en cuenta que el producto cartesiano obtiene todas las posibles combinaciones de filas por lo tanto si tenemos dos tablas de 100 registros cada una, el resultado tendrá 100x100 filas, si el producto lo hacemos de estas dos tablas con una tercera de 20 filas, el resultado tendrá200.000 filas (100x100x20) y estamos hablando de tablas pequeñas. Se ve claramente que el producto cartesiano es una operación costosa sobre todo si operamos con más de dos tablas o con tablas voluminosas.Se puede componer una tabla consigo misma, en este caso es obligatorio utilizar un nombre de alias por lo menos para una de las dos.
Por ejemplo: SELECT * FROM empleados, empleados empEn esteejemplo obtenemos el producto cartesiano de la tabla de empleados con ella misma. Todas las posibles combinaciones de empleados con empleados |

El INNER JOIN |

El INNER JOIN es otro tipo de composición de tablas, permite emparejar filas de distintas tablas de forma más eficiente que con el producto cartesiano cuando una de las columnas de emparejamiento está indexada. Ya que en vez de hacerel producto cartesiano completo y luego seleccionar la filas que cumplen la condición de emparejamiento, para cada fila de una de las tablas busca directamente en la otra tabla las filas que cumplen la condición, con lo cual se emparejan sólo las filas que luego aparecen en el resultado.
La sintaxis es la siguiente:   |

|

Ejemplo:SELECT *
FROM pedidos INNER JOIN clientes ON pedidos.clie =clientes.numclietabla1 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.col1, col2 son las columnas de emparejamiento. Observar que dentro de la cláusula ON los nombres de columna deben ser nombrescualificados (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 numéricos deben ser de tipos similares. Por ejemplo, se puede combinar campos AutoNumérico y Long puesto que son tipos similares, sin embargo, no se puede combinar campos de tipo Simple y Doble. Además lascolumnas no pueden ser de tipo Memo ni OLE.comp representa cualquier operador de comparación ( =, <, >, <=, >=, o <> ) y se utiliza para establecer la condición de emparejamiento.Se pueden definir varias condiciones de emparejamiento unidas por los operadores AND y OR poniendo cada condición entre paréntesis. Ejemplo:

SELECT *
FROM pedidos INNER JOIN productos ON (pedidos.fab =productos.idfab) AND (pedidos.producto = productos.idproducto)Se pueden combinar más de dos tablas
En este caso hay que sustituir en la sintaxis una tabla por un INNER JOIN completo.

Por ejemplo:SELECT *
FROM (pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie) INNER JOIN empleados ON pedidos.rep = empleados.numempEn vez de tabla1 hemos escrito un INNER JOIN completo, también podemos...
tracking img