Archivo de etiquetas SQL

PorLucía Montero Rodríguez

SQL: utilizar campos situados en tablas distintas

Como lo prometido es deuda, tras un breve parón, retomamos nuestro tutorial de Access para ver cómo podemos mostrar mediante SQL campos que se encuentran situados en diferentes tablas relacionadas entre sí. Para practicar, emplearemos como ya es habitual nuestra base de datos librería.mdb.

Comenzaremos por algo sencillo, simplemente una consulta que muestre el Nombre, Apellidos y Provincia de cada cliente; pero primero vamos a recordar las relaciones existentes en la base de datos:

Relaciones de la base de datos Libreria

La clave para que la consulta funcione correctamente reside en la forma de indicar qué campos de ambas tablas forman la relación. Para ello, podemos emplear dos opciones diferentes. Pero eso es algo que indicaremos tras especificar los campos y tablas que deseamos utilizar.

Relaciones mediante WHERE

Tras la cláusula FROM emplearemos la instrucción WHERE para indicar qué campos deben coincidir entre sí. Por ejemplo:

SELECT clientes.nombre,clientes.apellidos,ciudades.nombre
FROM clientes,ciudades
WHERE clientes.codciudad=ciudades.codciudad;

Como en este caso, teníamos dos campos con la misma denominación (Nombre) ha sido necesario anteponer la tabla para indicar con cuál exactamente queríamos trabajar. El resultado debe ser similar al que ahora mostramos en la figura:

Consulta SQL entre tablas relacionadas mediante WHERE

Relaciones mediante INNER JOIN

Si empleamos la versión SQL en Access, podemos utilizar la instrucción INNER JOIN para indicar la relación existente, dejando WHERE para establecer criterios de filtrado adicionales; por ejemplo para el caso anterior:

SELECT clientes.nombre,clientes.apellidos,ciudades.nombre
FROM clientes
INNER JOIN ciudades ON clientes.codciudad=ciudades.codciudad;

Fíjate bien porque hay cambios. Ahora en FROM sólo hemos indicado una de las tablas (Clientes), la otra se especifica tras INNER JOIN (ciudades) y tras ON debemos establecer los campos a coincidir.

Por supuesto, el resultado final es el mismo que en el primer caso, pero podemos mejorarlo un poquito recordando que AS nos permite incluir títulos de columnas. Por ejemplo:

SELECT clientes.nombre AS Nombre,clientes.apellidos AS Apellidos,ciudades.nombre AS Ciudad
FROM clientes
INNER JOIN ciudades ON clientes.codciudad=ciudades.codciudad;

Consulta SQL entre tablas relacionadas con título de columnas mediante INNER JOIN

Además, en Access podemos emplear dos variantes para relaciones más personalizadas: INNER LEFT e INNER RIGHT.

Relaciones y criterios

Vamos a complicar ligeramente el supuesto anterior, ya que ahora sólo nos interesa mostrar los clientes de Sevilla o de Cádiz, por lo que deberemos añadir el filtro.

Para el primer caso, con la instrucción WHERE, necesitaremos escribir la condición que añadiremos a la anterior mediante AND:

SELECT clientes.nombre AS Nombre,clientes.apellidos AS Apellidos,ciudades.nombre AS Ciudad
FROM clientes,ciudades
WHERE (clientes.codciudad=ciudades.codciudad) AND (ciudades.nombre IN("Sevilla","Cádiz"));

Mediante INNER JOIN sólo tendremos que incluir tras la misma la instrucción WHERE correspondiente, tal y como vimos en la entrada dedicada a Consultas SQL de selección con criterios, quedando su escritura como te mostramos a continuación:

SELECT clientes.nombre AS Nombre,clientes.apellidos AS Apellidos,ciudades.nombre AS Ciudad
FROM clientes
INNER JOIN ciudades ON clientes.codciudad=ciudades.codciudad
WHERE ciudades.nombre IN("Sevilla","Cádiz");

En ambos casos, el resultado sólo mostrará cuatro registros que cumplen la condición especificada:Consulta SQL entre tablas relacionadas con criterio usando INNER JOIN y WHERE

Utiliza SQL para relacionar con facilidad campos con diferentes orígenes

PorLucía Montero Rodríguez

Agregar datos en PowerPivot mediante SQL

PowerPivot para ExcelTras ver cómo podíamos trabajar en PowerPivot con datos añadidos mediante el asistente, es el momento de avanzar.

Si el último artículo de Access estaba dedicado a iniciarse en SQL, hoy vamos a ver que también se puede utilizar este lenguaje en Excel.

Importar datos mediante SQL

Al trabajar con SQL desde PowerPivot también se presentan varias alternativas: importar una consulta ya creada o escribirla desde cero. En cualquier caso, el comienzo es el mismo, utilizar el asistente. Sigue estos pasos para practicar:

  1. Ve a Ventana de PowerPivot
  2. En Inicio, escoge como origen De base de datos y luego De Access.
  3. Para nombre de la conexión escribeCategorías. Con el botón Examinar selecciona la base ProductCategories del paquete de ejemplo Contoso, que Microsoft pone a nuestro alcance.
  4. Haz clic en Siguiente.

Es en este punto cuando nuestro camino cambia respecto al anterior artículo, ya que ahora vamos a decantarnos por Escribir una consulta que especifique los datos a importar.

Tras pulsar de nuevo Siguiente, asignamos el nombre descriptivo; por ejemplo, Todo menos Audio. En la parte inferior tienes a tu alcance el botón Diseño, con el que puedes Importar una consulta ya creada. Sin embargo, esta vez nos vamos a lanzar a diseñar una consulta nueva, que extraiga los datos de todas las categorías existentes menos la de Audio. Así que toca escribir el siguiente código en el cuadro de diálogo:

SELECT DimProductCategory.ProductCategoryKey, DimProductCategory.ProductCategoryLabel, DimProductCategory.ProductCategoryName, DimProductCategory.ProductCategoryDescription
FROM DimProductCategory
WHERE (ProductCategoryName <> 'AUDIO')

Antes de Aceptar es recomendable pulsar Validar para comprobar que no existen errores de sintaxis. Si todo está correcto, será el momento de Finalizar.

Resultado en PowerPivot

En ese momento, PowerPivot conectará con la base de datos escogida y realizará la importación de todos los elementos que cumplan los criterios establecidos en la consulta. Al Cerrar podrás ver el resultado en la pantalla principal.

Datos extraidos para PowerPivot mediante SQL

PowerPivot genera los datos como una tabla nueva denominada Consulta. ¿No la ves? Entonces revisa la pestaña que aparece en la zona inferior de la pantalla 😉

Si en cualquier momento desearas modificar su nombre, sólo sería necesario acceder al menú contextual de la pestaña y utilizar la opción Cambiar nombre, así de fácil. Además, en dicho menú tienes a tu alcance otras opciones que también pueden ser útiles para Eliminar la consulta o asignarle una Descripción.

En cualquier caso, has podido comprobar mediante este ejemplo, que el uso de consultas SQL es un método sencillo y eficaz para extraer información.

Practica con SQL para importar distintos datos en PowerPivot

PorLucía Montero Rodríguez

Primeros pasos con SQL

Llegados a este punto, verás que el primer icono de la cinta contextual es SQL, pulsa para entrar en el cuadro de creación. De todas formas, también puedes acceder desde el minibotón situado en la esquina inferior derecha de la aplicación.

Sentencias básicas con SQL

Dos, sin dudarlo, SELECT y FROM, de uso obligado para todas aquellas consultas que sirvan para mostrar datos en pantalla.

SELECT campo1,campo2…

indica qué campos deseas mostrar separados entre sí por comas

FROM tabla

especifica de qué tabla provienen los mismos

Por ejemplo, si tomamos como referencia una vez más la base de datos librería, y cuyo esquema de relaciones mostramos a continuación, vamos a escribir una consulta que muestre el Código, Título y Precio de cada libro.

Relaciones de la base de datos libreria

Para empezar a escribir una consulta SQL, en la cinta Crear haz clic en Diseño de consulta. A continuación, cierra el cuadro Mostrar tabla. Después, utiliza el primer botón de la cinta, SQL y escribe el siguiente código.

 SELECT codlibro, titulo, precio
FROM libros;

Al pulsar Ejecutar verás el resultado:

Consulta SQL de selección

Un detalle a tener en cuenta, es que si el nombre del campo contiene espacios, éste deberá escribirse entre corchetes; por ejemplo en caso de querer utilizar un campo denominado [descuento maximo].

Mejorar el aspecto de salida

A través de dos clausulas adicionales podemos modificar fácilmente el formato del resultado; son las siguientes:

AS titulo

tras el nombre de un campo, se usa para especificar el título que aparecerá como encabezado de la columna correspondiente

ORDER BY campo

muestra el listado ordenado por dicho campo

Mira esta variante de la consulta anterior y su posterior resultado:

SELECT codlibro AS Código, titulo AS Título, precio AS PVP
FROM libros
ORDER BY precio;

Consulta SQL de selección ordenada

Como ves, por defecto el orden se aplica de la A a la Z o de menor a mayor, si lo deseas a la inversa:

SELECT codlibro AS Código, titulo AS Título, precio AS PVP
FROM libros
ORDER BY precio DESC;

Hasta aquí nuestro primer artículo dedicado a las consultas SQL, en futuras entradas iremos viendo qué posibilidades nos ofrece este lenguaje.