En artículos anteriores hemos visto, entre otras operaciones, cómo obtener mediante SQL los datos de una o más tablas relacionadas entre sí. Sin embargo, es posible que en algún momento la definición empleada de, como resultado, datos repetidos.
Por ejemplo, utilizando la base de datos librería.mdb, vamos a crear una consulta que muestre el nombre de todas las editoriales con ventas. Para conseguirlo, escribiremos el siguiente código:
SELECT editorial.nombre AS Proveedor FROM Editorial INNER JOIN (Libros INNER JOIN Facturas ON Libros.codlibro=Facturas.codlibro) ON Editorial.codeditorial=Libros.codeditorial;
Fíjate cómo hemos definido las dos relaciones en dicha sentencia. Primero, la de Editorial a Libros y a continuación y entre paréntesis, la de Libros a Facturas. Es decir, cuando tengas más de una relación, la segunda y posteriores deberán anidarse con paréntesis adecuadamente.
La instrucción anterior, provocará por pantalla el resultado de la imagen al ejecutar la consulta. Como puedes ver, aparece una línea por cada una de las ventas efectuadas, pero existen nombres repetidos, lo que no parece demasiado lógico. Para evitarlo, sólo necesitamos añadir una de las siguientes cláusulas a la instrucción anterior, justo detrás de SELECT.
Provoca que no aparezcan los registros duplicados, en función de los campos que queremos mostrar en la consulta.
Como la anterior, elimina los registros duplicados, en función de los campos incluidos en la consulta, aunque no aparezcan en el resultado de la misma. Es decir, evalúa la coincidencia completa del registro, no sólo de los campos a mostrar
En nuestro ejemplo, el resultado es el mismo con ambos términos, como se puede apreciar en la imagen.
Para aportar mayor claridad, hemos añadido a la tabla Clientes el último registro que se muestra en la siguiente imagen, correspondiente al cliente Francisco Márquez Sierra:
Ahora vamos a escribir una consulta en la que aparezcan los nombres de nuestros clientes de tres formas distintas para apreciar mejor las diferencias entre el uso o no de las diferentes cláusulas.
Acerca del autor