Está usted en Indice > Construcción > Lenguajes > MySQL > Manual de MySQL > Usando más de una tabla (II)
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Enlaces Relacionados

Usando más de una tabla (II)
Usando más de una tabla (II)
Usando más de una tabla (II)

MANUAL DE MYSQL

USANDO MAS DE UNA TABLA (II)

Supongamos que desemos conocer la edad de cada mascota cuando tuvieron una camada. La tabla eventos indica cuando ocurrió dicho evento, pero para calcular la edad de la madre, necesitamos sin duda su fecha de nacimiento. Dado que este dato está almacenado en la tabla mascotas, necesitamos de ambas tablas para realizar esta consulta.


mysql> SELECT mascotas.nombre,
    -> (TO_DAYS(fecha) - TO_DAYS(nacimiento))/365 AS edad,
    -> descripcion FROM mascotas, eventos
    -> WHERE mascotas.nombre=eventos.nombre 
    -> AND tipo='camada';
+--------+------+---------------------------------+
| nombre | edad | descripcion                     |
+--------+------+---------------------------------+
| Fluffy | 2.28 | 4 gatitos, 3 hembras, 1 macho   |
| Buffy  | 2.12 | 5 perritos, 2 hembras, 3 machos |
| Buffy  | 3.10 | 2 perritos, 1 hembra, 1 macho   |
+--------+------+---------------------------------+
3 rows in set (0.05 sec)


Hay diversas cosas que notar acerca de esta consulta:
  • La cláusula FROM lista dos tablas dado que la consulta necesita información que se encuentra en ambas tablas.

  • Cuando se combina (junta) información de múltiples tablas, es necesario especificar los registros de una tabla que pueden coincidir con los registros en la otra tabla. En nuestro caso, ambas columnas tienen una columna "nombre". La consulta usa la cláusula WHERE para obtener los registros cuyo valor en dicha columna es el mismo en ambas tablas.

  • Dado que la columna "nombre" ocurre en ambas tablas, debemos de especificar a cuál de las columnas nos referimos. Esto se hace al anteponer el nombre de la tabla al nombre de la columna.

Nota: La función TO_DAYS( ) regresa el número de días transcurridos desde el año 0 hasta la fecha dada.

No es necesario que se tengan dos tablas diferentes para que se puedan juntar. Algunas veces es útil juntar una tabla consigo misma si se desean comparar registros de la misma tabla. Por ejemplo, para encontrar las posibles parejas entre nuestras mascotas de acuerdo a la especie, la consulta sería la siguiente:
mysql> SELECT m1.nombre, m1.sexo, m2.nombre, m2.sexo, m1.especie
    -> FROM mascotas AS m1, mascotas AS m2
    -> WHERE m1.especie=m2.especie AND m1.sexo="f" AND m2.sexo="m";
+--------+------+--------+------+---------+
| nombre | sexo | nombre | sexo | especie |
+--------+------+--------+------+---------+
| Fluffy | f    | Mau    | m    | Gato    |
| Buffy  | f    | FanFan | m    | Perro   |
| Buffy  | f    | Kaiser | m    | Perro   |
+--------+------+--------+------+---------+
3 rows in set (0.00 sec)

En esta consulta se ha especificado un alias para el nombre de la tabla, y es éste el que se utiliza para referirse a las columnas.

 



Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 05-07-2008 a las 14:52:07