Cómo realizar selecciones sobre varias tablas. Ejemplos prácticos basados en una aplicación de e-comercio.
Refiriéndonos a nuestro clásico ejemplo de una base de datos para una aplicación de e-comercio, la tabla clientes de la que hemos estado hablando puede estar perfectamente coordinada con una tabla donde almacenamos los pedidos realizados por cada cliente. Esta tabla de pedidos puede a su vez estar conectada con una tabla donde almacenamos los datos correspondientes a cada artículo del inventario.
De este modo podríamos fácilmente obtener informaciones contenidas en esas tres tablas como puede ser la designación del artículo más popular en una determinada región donde la designación del artículo sería obtenida de la tabla de artículos, la popularidad (cantidad de veces que ese artículo ha sido vendido) vendría de la tabla de pedidos y la región estaría comprendida obviamente en la tabla clientes.
Este tipo de organización basada en múltiples tablas conectadas nos permite trabajar con tablas mucho más manejables a la vez que nos evita copiar el mismo campo en varios sitios ya que podemos acceder a él a partir de una simple llamada a la tabla que lo contiene.
En este capítulo veremos como, sirviéndonos de lo aprendido hasta ahora, podemos realizar fácilmente selecciones sobre varias tablas. Definamos antes de nada las diferentes tablas y campos que vamos a utilizar en nuestros ejemplos:
Tabla de clientes | |
---|---|
Nombre campo | Tipo campo |
id_cliente | Numérico entero |
nombre | Texto |
apellidos | Texto |
direccion | Texto |
poblacion | Texto |
codigopostal | Texto |
telefono | Numérico entero |
Texto |
Tabla de pedidos | |
---|---|
Nombre campo | Tipo campo |
id_pedido | Numérico entero |
id_cliente | Numérico entero |
id_articulo | Numérico entero |
fecha | Fecha |
cantidad | Numérico entero |
Tabla de artículos | |
---|---|
Nombre campo | Tipo campo |
id_articulo | Numérico entero |
titulo | Alfanumérico |
autor | Alfanumérico |
editorial | Alfanumérico |
precio | Numérico real |
Estas tablas pueden ser utilizadas simultáneamente para extraer informaciones de todo tipo. Supongamos que queremos enviar un mailing a todos aquellos que hayan realizado un pedido ese mismo día. Podríamos escribir algo así:
Select clientes.apellidos, clientes.email From clientes,pedidos Where pedidos.fecha like '25/02/00' And pedidos.id_cliente= clientes.id_cliente
Como puede verse esta vez, después de la cláusula From, introducimos el nombre de las dos tablas de donde sacamos las informaciones. Además, el nombre de cada campo va precedido de la tabla de provenencia separados ambos por un punto. En los campos que poseen un nombre que solo aparece en una de las tablas, no es necesario especificar su origen aunque a la hora de leer la sentencia puede resultar más claro el precisarlo. En este caso el campo fecha podría haber sido designado como "fecha" en lugar de "pedidos.fecha".
Veamos otro ejemplo más para consolidar estos nuevos conceptos. Esta vez queremos ver el título del libro correspondiente a cada uno de los pedidos realizados:
Select pedidos.id_pedido, articulos.titulo From pedidos, articulos Where pedidos.id_articulo=articulos.id_articulo
En realidad la filosofía continua siendo la misma que para la consulta de una única tabla.
Rubén Alvarez
Rubén es doctor en química y programador principalmente en sus ratos libres con...