Cómo escribir consultas sql access de microsoft desde cero

Microsoft Access es sin duda la herramienta más poderosa en toda la suite de Microsoft Office, sin embargo, mistifica (y, a veces asusta a) los usuarios avanzados de Office. Con una curva de aprendizaje más pronunciada que Word o Excel, ¿cómo se supone que cualquier persona para envolver su cabeza en torno a la utilización de esta herramienta? Esta semana, Bruce Epper se verá en algunos de los temas estimulados por esta pregunta de uno de nuestros lectores.

Un lector pregunta:

Estoy teniendo problemas para escribir una consulta en Microsoft Access.

Tengo una base de datos con dos tablas de productos que contiene una columna común con un código de producto numérico y un nombre de producto asociado.

Quiero saber qué productos de la Tabla A se pueden encontrar en la Tabla B. Quiero añadir una columna denominada Resultados que contiene el nombre del producto de la Tabla A si existe, y el nombre del producto en el cuadro B, cuando no existe en la Tabla A.

¿Tienes algún consejo?

Responder de Bruce:

Microsoft Access es un sistema de gestión de bases de datos (DBMS) diseñado para su uso en las dos máquinas Windows y Mac. Utiliza el motor de base de datos Jet de Microsoft para el procesamiento y almacenamiento de datos. También proporciona una interfaz gráfica para los usuarios, que casi elimina la necesidad de comprender el lenguaje de consulta estructurado (SQL).

SQL es el lenguaje de comandos para añadir, eliminar, actualizar, y la información almacenada en la base de datos regresar, así como modificar los componentes básicos de bases de datos tales como añadir, borrar o modificar las tablas o índices.

Punto de partida

Si usted no tiene ya cierta familiaridad con acceso u otro RDBMS, sugeriría que comience con estos recursos antes de proceder:

Tener un conocimiento básico de los conceptos previstos en estos artículos hará la siguiente un poco más fácil de digerir.

Vídeo: Microsoft Access - Consultas con instrucciones en Lenguaje SQL (Añadir, modificar y eliminar, etc.)

Relaciones de bases de datos y normalización

Imagínese que usted está ejecutando una empresa de venta de 50 tipos diferentes de widgets de todo el mundo. Usted tiene una base de clientes de 1250 y en un mes promedio vende 10.000 reproductores a estos clientes. En este momento está usando una sola hoja de cálculo para realizar un seguimiento de todas estas ventas - efectivamente una única tabla de base de datos. Y cada año se suma miles de filas a la hoja de cálculo.

-Table-1 plana-Table-2 plana

Las imágenes anteriores son parte de la hoja de cálculo de seguimiento de pedidos que está utilizando. Ahora dicen que estos dos clientes comprar widgets de que varias veces al año por lo que tiene mucho más filas para los dos.

Si Joan Smith se casa con Ted Baines y toma su apellido, cada una hilera que contiene su nombre ahora necesita ser cambiado. El problema se agrava si le sucede que tiene dos clientes diferentes con el nombre ‘Joan Smith`. Se acaba de llegar a ser mucho más difícil de mantener sus datos de ventas constante debido a un evento bastante común.

Mediante el uso de una base de datos y la normalización de los datos, podemos separar los elementos en varias tablas tales como inventario, clientes y pedidos.

normalización

La sola observación de la parte cliente de nuestro ejemplo, queremos eliminar las columnas para el nombre del cliente y dirección del cliente y ponerlos en una tabla nueva. En la imagen de arriba, también he roto cosas fuera mejor para un acceso más controlado a los datos. La nueva tabla también contiene una columna para una clave principal (ClientID) - un número que se utilizará para acceder a cada fila de esta tabla.

En la tabla original en el que hemos eliminado estos datos, nos gustaría añadir una columna de clave externa (ClientID) que es lo que une a la fila que contiene la información adecuada para este cliente en particular.

Ahora, cuando Joan Smith cambia su nombre a Joan Baines, el cambio sólo hay que hacer una vez en la mesa del cliente. Todas las demás referencias a tablas combinadas se tire el nombre del cliente adecuado y un informe que está mirando a lo que Joan ha adquirido en los últimos 5 años va a conseguir todos los pedidos de menos tanto a su doncella y nombres de casada sin tener que cambiar la forma en que se genera el informe .

Como un beneficio adicional, esto también reduce la cantidad total de almacenamiento consumido.

Tipos de combinación

SQL define cinco tipos diferentes de combinaciones: Inner, exterior izquierda, derecha exterior, externa completa, y la cruz. La palabra clave es opcional EXTERIOR en la instrucción SQL.

Microsoft Access permite el uso de interior (por defecto), IZQUIERDA EXTERIOR, EXTERIOR DERECHA, y la cruz. FULL OUTER no se admite como tal, pero mediante el uso de LEFT OUTER, UNION ALL, y exterior adecuado, puede ser falsificada a costa de más ciclos de CPU y I operaciones de E / S.

La salida de una combinación cruzada contiene cada fila de la tabla izquierda emparejado con cada fila de la tabla de la derecha. La única vez que he visto una combinación cruzada usada es la prueba de carga de los servidores de bases de datos.

Vamos a echar un vistazo a cómo el trabajo básico se une, a continuación, vamos a modificarlos para adaptarlos a nuestras necesidades.

Vamos a empezar por la creación de dos mesas, y Proda ProdB, con las siguientes propiedades de diseño.

Vídeo: Creando Consulta SQL de Seleccion en Access 2013

Acceso-table-defs

El Autonumérico es un número entero largo incrementa automáticamente asignada a las entradas a medida que se añaden a la tabla. La opción de texto no se modificó, para que acepte una cadena de texto de hasta 255 caracteres de longitud.

Ahora, rellenarlas con algunos datos.

access-mesas

Para mostrar las diferencias en la forma en que el 3 se unen a los tipos de trabajo, he suprimido las entradas 1, 5 y 8 de PRODA.

A continuación, crear una nueva consulta al ir a Crear gt; Diseño de la consulta. Seleccione las dos tablas del diálogo Mostrar tabla y haga clic en Agregar, entonces Cerca.

nueva consulta

Haga clic en ProductID en la tabla Proda, arrastrarlo a ProductID en la tabla ProdB y suelte el botón del ratón para crear la relación entre las tablas.

vista de diseño

Haga clic derecho en la línea entre las tablas que representan la relación entre los elementos y seleccione Propiedades de la combinación.

join_properties

Por defecto, se unen tipo 1 (interior) está seleccionado. La opción 2 es una combinación externa izquierda y 3 es una combinación externa derecha.

Vamos a mirar la combinación interna en primer lugar, así que haga clic en OK para cerrar el diálogo.

En el diseñador de consultas, seleccione los campos que queremos ver en las listas desplegables.

diseño-view-2

Cuando ejecutamos la consulta (el signo de exclamación de color rojo en la cinta), se mostrará el campo ProductName de ambas tablas con el valor de la tabla PRODA en la primera columna y ProdB en el segundo.

unir internamente

Observe que los resultados sólo muestran los valores donde ProductID es igual en ambas tablas. A pesar de que hay una entrada para ProductID = 1 en la tabla ProdB, que no aparece en los resultados, ya que ProductID = 1 no existe en la tabla PRODA. Lo mismo se aplica a ProductID = 11. Existe en la tabla PRODA pero no en la tabla ProdB.

Diseño de la cinta

Al utilizar el botón Ver en la cinta y el cambio a la vista SQL, se puede ver la consulta SQL generada por el diseñador utiliza para obtener estos resultados.

SELECCIONAR PRODA.Nombre del producto, ProdB.Nombre del producto DE PRODA INTERIOR UNIRSE ProdB EN PRODA.ID del Producto = ProdB.ID del Producto-

Volviendo a la vista Diseño, cambiar el tipo de unirse a 2 (IZQUIERDA EXTERIOR). Ejecutar la consulta para ver los resultados.

izquierda combinación externa

Como se puede ver, cada entrada en la tabla PRODA está representado en los resultados, mientras que sólo los que están en ProdB que tienen una entrada coincidente en la tabla ProductID ProdB aparecen en los resultados.

El espacio en blanco en la columna de la ProdB.ProductName es un valor especial (NULL) ya que no hay un valor coincidente en la tabla ProdB. Esto será importante más adelante.

SELECCIONAR PRODA.Nombre del producto, ProdB.Nombre del producto DE PRODA IZQUIERDA UNIRSE ProdB EN PRODA.ID del Producto = ProdB.ID del Producto-

Intentar hacer lo mismo con el tercer tipo de unión (DERECHA EXTERIOR).

right_outer_join

Los resultados muestran todo, desde la mesa de ProdB mientras se está mostrando en blanco (NULL) conocida como valores en la tabla PRODA no tiene un valor coincidente. Hasta ahora, esto nos lleva más cerca de los resultados deseados en la pregunta de nuestro lector.

SELECCIONAR PRODA.Nombre del producto, ProdB.Nombre del producto DE PRODA DERECHO UNIRSE ProdB EN PRODA.ID del Producto = ProdB.ID del Producto-

Uso de funciones en una consulta

Los resultados de una función también pueden ser devueltos como parte de una consulta. Queremos una nueva columna llamada ‘Resultados que aparezca en nuestro conjunto de resultados. Su valor será el contenido de la columna ProductName de la tabla PRODA si PRODA tiene un valor (no es NULL), de lo contrario, se debe tomar de la mesa ProdB.

La función inmediata si (IIF) se puede utilizar para generar este resultado. La función toma tres parámetros. La primera es una condición que debe evaluarse a un valor verdadero o falso. El segundo parámetro es el valor que se devuelve si la condición es verdadera, y el tercer parámetro es el valor que se devuelve si la condición es falsa.

La construcción de la función completa para nuestra situación se parece a esto:

IIF(PRODA.ID del Producto Es Nulo, ProdB.Nombre del producto,PRODA.Nombre del producto)

Observe que el parámetro de condición no comprueba la igualdad. Un valor nulo en una base de datos no tiene un valor que puede ser comparado con cualquier otro valor, incluyendo otra Null. En otras palabras, no es igual a Null Null. Nunca. Para superar esto, en lugar comprobar el valor usando la palabra clave ‘es.

También podríamos haber utilizado ‘no es nulo` y cambió el orden de los parámetros Verdadero y Falso para obtener el mismo resultado.

Al poner esto en el Diseñador de consultas, debe escribir la función entera en el campo: entrada. Para conseguirlo para crear las columnas ‘Resultados, es necesario utilizar un alias. Para ello, prologar la función con ‘Resultados:` como se ve en la siguiente captura de pantalla.

-aliasing-resultados-exterior derecho del diseño

El código SQL equivalente a hacer esto sería:

SELECCIONAR PRODA.Nombre del producto, ProdB.Nombre del producto, IIF(PRODA.ID del Producto Es Nulo,ProdB.Nombre del producto,PRODA.Nombre del producto) COMO resultados DE PRODA DERECHO UNIRSE ProdB EN PRODA.ID del Producto = ProdB.ID del Producto-

Ahora, cuando nos encontramos esta consulta, se va a producir estos resultados.

right_outer_with_aliased_results

Aquí vemos para cada entrada en la tabla PRODA tiene un valor, ese valor se refleja en la columna Resultados. Si no hay una entrada en la tabla Proda, la entrada de ProdB aparece en los resultados, que es exactamente lo que pidió a nuestro lector.

Para obtener más recursos para el aprendizaje de Microsoft Access, echa un vistazo a Joel Lee Cómo aprender de Microsoft Access: 5 Recursos Gratuitos.Cómo aprender de Microsoft Access: 5 Recursos GratuitosCómo aprender de Microsoft Access: 5 Recursos Gratuitos¿Tiene que gestionar una gran cantidad de datos? Usted debe buscar en Microsoft Access. Nuestros recursos de estudio libres pueden ayudarle a empezar y aprender las habilidades para los proyectos más complejos.Lee mas

Artículos Relacionados