eede
En el ejemplo anterior si quiere obtener una lista de los datos de las tareas y los empleados, se podría hacer de esta forma:
SELECT cod_tarea,descripcion_tarea, dni_empleado,
nombre_empleado
FROM tareas,empleados;
La sintaxis es correcta ya que, efectivamente, en el apartado FROM se pueden indicar varias tareas separadas por comas. Peroeso produce un producto cruzado, aparecerán todos los registros de las tareas relacionados con todos los registros de empleados.
El producto cartesiano a veces es útil para realizar consultascomplejas, pero en el caso normal no lo es. necesitamos discriminar ese producto para que sólo aparezcan los registros de las tareas relacionadas con sus empleados correspondientes. A eso se le llamaasociar (join) tablas.
Asociando tablas
La forma de realizar correctamente la consulta anterior (asociado las tareas con los empleados que la realizaron sería:
SELECT cod_tarea,descripcion_tarea, dni_empleado, nombre_empleado
FROM tareas,empleados
WHERE tareas.dni_empleado = empleados.dni;
Nótese que se utiliza la notación tabla.columna para evitar la ambigüedad, ya que el mismonombre de campo se puede repetir en ambas tablas. Para evitar repetir continuamente el nombre de la tabla, se puede utilizar un alias de tabla:
SELECT a.cod_tarea, a.descripcion_tarea,b.dni_empleado, b.nombre_empleado
FROM tareas a,empleados b
WHERE a.dni_empleado = b.dni;
Al apartado WHERE se le pueden añadir condiciones encadenándolas con el operador AND. Ejemplo:
SELECTa.cod_tarea, a.descripcion_tarea
FROM tareas a,empleados b
WHERE a.dni_empleado = b.dni AND
b.nombre_empleado='Javier';
Finalmente indicar que se pueden enlazar más de dos tablas a través de suscampos relacionados. Ejemplo:
SELECT a.cod_tarea, a.descripcion_tarea, b.nombre_empleado, c.nombre_utensilio
FROM tareas a,empleados b, utensilios_utilizados c
WHERE a.dni_empleado = b.dni...
Regístrate para leer el documento completo.