Obtener información de varias tablas
SQL propone un método para identificar la tabla asociada a cada uno de los campos cuando trabajas con varias tablas. La sintaxis consiste en anteponer el nombre de la tabla al nombre del campo y separarlos por un punto:
NombreTabla.NombreCampo
Antes de ver el primer ejemplo, revisemos los distintos tipos de relación que se pueden definir entre las tablas.
- Interna (JOIN INTERNO): El resultado muestra sólo los registros en los que el campo vinculado de ambas tablas sea el mismo.
- Izquierda (JOIN IZQUIERDO): En este caso, el resultado muestra todos los registros de la tabla izquierda, y sólo aquellos de la tabla derecha donde coincida el campo vinculado.
- Derecha (JOIN DERECHO): Con este modelo ocurriría justo lo contrario que en el anterior, aparecerían todos los registros de la tabla derecha y sólo aquellos de la tabla izquierda en los que coincidan los campos vinculados.
- Completa (JOIN CRUZADO): Muestra todos los registros de ambas tablas.
Por supuesto, en SQL también existe la posibilidad de reproducir cada uno de estos tipos de unión pero en estos momentos no es necesario añadir este nivel de complejidad al curso, así que utilizaremos la fórmula más sencilla, la vinculación de tablas mediante la cláusula WHERE. Este método equivale a seleccionar aquellos registros donde ambas tablas tengan coincidencia que, por otra parte, es la situación más común cuando trabajes con bases de datos.
En nuestro primer ejemplo, utilizaremos las tablas Alumnos y Cursos para representar en una consulta el grupo al que pertenece cada uno de los alumnos que forman nuestra base de datos.
- Selecciona la opción Crear consulta en vista SQL y empieza escribiendo: SELECT.
- A continuación indica los campos de la tabla que deseas mostrar en la consulta, pero recuerda que ahora debes anteponer el nombre de la tabla. Incluye los campos Nombre y Apellidos de la tabla Alumnos.
- De la tabla Cursos utiliza sólo el campo Curso.
- Ahora añade la cláusula FROM y escribe el nombre de las dos tablas implicadas: Alumnos y Cursos.
- Esta es la parte más delicada de la consulta, donde debes vincular los campos de ambas tablas que permitirán obtener los resultados correctos. En este caso es necesario relacionar el campo Grupo de la tabla Alumnos con el campo IdCurso de la tabla Curso. Escribe en primer lugar la cláusula WHERE y después lo siguiente: Alumnos.Grupo=Cursos.IdCurso
- La instrucción SQL queda del siguiente modo: SELECT Alumnos.Nombre, Alumnos.Apellidos, Cursos.Curso FROM Alumnos, Cursos WHERE Alumnos.Grupo=Cursos.IdCurso
- Por ahora es suficiente, ejecuta la consulta. En la figura 6.12 puedes ver su aspecto y el resultado obtenido.
Actividad 8
Pero puedes depurar un poco más el ejemplo. ¿Qué tal si ordenas el resultado alfabéticamente por los apellidos del alumno? La figura 6.13 muestra el resultado de la nueva consulta. Una vez terminada, guarda la consulta.
Figura 6.13
Actividad 9
También puedes añadir una condición a la consulta anterior. Por ejemplo, muestra únicamente los alumnos de 1B. Para ello, debes añadir una nueva condición a la cláusula WHERE, antes de ORDER BY y enlazarla mediante el operador AND. El resultado que obtengas debe ser similar al que muestra la figura 6.14. Una vez terminada, guarda la consulta.
Figura 6.14
Actividad 10
Ahora riza un poco más el rizo, y modifica la consulta diseñada en la actividad 9, para que muestre los alumnos que pertenezcan a 1A o a 1B, pero esta vez los ordenarás primero por el grupo y a continuación, por el apellido. La forma de conseguirlo es utilizar un nuevo criterio enlazado con el anterior mediante el operador OR ya que quieres mostrar cualquiera de las dos opciones. Observa el resultado en la figura 6.15 y guarda la consulta.
Figura 6.15