Duda sobre consulta

Dudas sobre Tablas, Consultas, Formularios, Informes...
JackSparrow
Nivel 1
Mensajes: 4
Registrado: Lun Jun 04, 2018 11:54 am

Duda sobre consulta

Mensajepor JackSparrow » Lun Jun 04, 2018 12:07 pm

Hola a todos, tengo una duda con un ejercicio de Access.

Tengo una base de datos con tres tablas: empleados, proyectos y empleado_proyecto.

En la tabla empleado esta el código del empleado y su país de origen como datos importantes. En la tabla proyecto tenemos el código del proyecto y el presupuesto y en empleado_proyecto el codigo de proyecto y el codigo de empleado (para saber que empleados han participado en cada proyecto).

Lo que me piden es una consulta en la que aparezcan todos los proyectos y su presupuesto en los que no interviene ningún trabajador de España.

Obviamente cojo los campos solicitados, pero si en país pongo la condicion (<>España) lo único que hace es mostrarme los resultados sin españa, pero no está teniendo en cuenta que si uno de los empleados del proyecto es de España debe NO tener en cuenta dicho proyecto.

Se supone que es una consulta que debe realizarse sin usar SQL y a través de la vista diseño de consulta.

Gracias!

Avatar de Usuario
Neckkito
Moderador
Mensajes: 721
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Duda sobre consulta

Mensajepor Neckkito » Lun Jun 04, 2018 10:09 pm

Hola:

La solución:

1.- Créate una consulta donde intervengan las tres tablas y las relacionas convenientemente por sus identificadores. Esa consulta debe incluir obligatoriamente el país de procedencia del empleado. Ejecútala para comprobar que te devuelve todos los resultados correctamente sin considerar filtro alguno

2.- Una vez esa consulta te devuelva la información que desees (sin filtro), al campo del país de procedencia del empleado le aplicas el filtro que desees (entiendo que será que no sea de España, pero como no sé cómo son tus campos no puedo precisar más).

3.- Si te ha devuelto bien la totalidad de resultados (punto 1), si el filtro del punto 2 está bien configurado, la consulta debería devolverte los resultados correctamente, esta vez con el filtro que solicitas.

Los comentarios:

1.- Si indicas que el país no debe ser España (si en país pongo la condicion (<>España) lo único que hace es mostrarme los resultados sin españa) no estás haciendo bien el filtro, porque lo que indicas que se pide es que el trabajador no sea de España.

2.- Una consulta, la hagas en vista diseño o no, SIEMPRE tiene una sentencia SQL de fondo. Así que, como curiosidad, decirte que tu expresión debe realizarse sin usar SQL y a través de la vista diseño de consulta no tiene sentido. Lo comento para que nadie se quede con la idea de que si solo la genero en vista diseño no uso SQL... Lo que ocurre es que no ves el lenguaje SQL que conforma la consulta, pero de estar, está.

Saludos.
Access MVP 2017-2018
http://bit.ly/NckAccess

JackSparrow
Nivel 1
Mensajes: 4
Registrado: Lun Jun 04, 2018 11:54 am

Re: Duda sobre consulta

Mensajepor JackSparrow » Mar Jun 05, 2018 3:03 pm

Se puede adjuntar de alguna manera el archivo de la BBDD¿? Lo he intentado normail y zip y no me ha dejado.

Imagino que así será más fácil dar con la solución.

Muchas gracias!

Avatar de Usuario
Neckkito
Moderador
Mensajes: 721
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Duda sobre consulta

Mensajepor Neckkito » Mar Jun 05, 2018 3:10 pm

viewtopic.php?f=2&t=11

Ahora bien, quien debe dar con la solución eres tú, que eres el que está aprendiendo. En otras palabras, que no creo que nadie te devuelva la BD con el ejercicio hecho. Lo comento porque no te extrañe si pasa el tiempo y nadie te responde.

Saludos,
Access MVP 2017-2018
http://bit.ly/NckAccess

JackSparrow
Nivel 1
Mensajes: 4
Registrado: Lun Jun 04, 2018 11:54 am

Re: Duda sobre consulta

Mensajepor JackSparrow » Mar Jun 05, 2018 8:10 pm

Jajaja, me parece fabuloso que me obliguéis a hacerla yo, pero yo sólo intento ayudar a un amigo que le han puesto el ejercicio. Yo usando el SQL con una consulta y una subconsulta lo he podido resolver pero es imposible que a él se lo pidan de esta manera. Es decir, hago una consulta con solo los proyectos de marruecos y luego la consulta principal diciendo que sean los NOT IN la consulta de Marruecos.

Y si lo hago en SQL cuando paso a la vista diseño, lo muestra como una SELECT dentro del criterio cosa que no es váilida para su nivel.

El enunciado de la pregunta es el siguiente:
Elaborar una lista en la que aparezcan aquellos proyectos en los que no interviene ningún trabajador de Marruecos. Presente el presupuesto y las fechas de inicio y entrega.

El enlace de descarga es:
http://www.filebig.net/files/Smqqas7esV

Muchas gracias!

JUBILADO1940
Nivel 5
Reto03
Mensajes: 144
Registrado: Jue Dic 03, 2015 9:56 pm

Re: Duda sobre consulta

Mensajepor JUBILADO1940 » Mar Jun 05, 2018 9:08 pm

Ten en cuenta los consejos que te dan los Maestros.
Se ha de suponer que la sede es el lugar de nacimiento del trabajador, si no es así, creo que no se puede resolver el problema ya que en ninguna tabla aparece el campo "Lugar de nacimiento del trabajador"
Yo aportaré mi granito diciendo que yo lo he resuelto utilizando las tablas que propones y seleccionando los campos que me interesan, todo siguiendo los puntos señalados por el Maestro Neckkito
Creo que es muy fácil.
Un saludo

Avatar de Usuario
Neckkito
Moderador
Mensajes: 721
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Duda sobre consulta

Mensajepor Neckkito » Mar Jun 05, 2018 10:09 pm

Hola!

Tras echar un ojo veo que si hubiera solo un trabajador en cada proyecto la solución sería trivial, pero ello no es así.

Una solución entonces sería obtener el resultado en dos pasos. Es decir:

1.- Crear una consulta que nos dé la información del Id de todos los proyectos en los que sí interviene un trabajador de Marruecos (es decir, de la sede número 3).

2.- Una vez tengamos esa consulta realizada nos creamos una segunda consulta a través del asistente para consultas de datos no coincidentes, en la cual lo que no debe coincidir entre la tabla de proyectos y la consulta obtenida es, precisamente, el id de proyecto.

La realización de la primera consulta es sumamente sencilla; en la otra basta seguir los pasos que nos da el asistente.

En el fondo, la idea es muy similar a la solución que propones tú. Dicho en palabras llanas, en esta última consulta vendríamos a decir: "dame todos los proyectos de la tabla Proyectos cuyo Id no sea coincidente con los Id's obtenidos en la consulta que nos muestra los proyectos en los que interviene algún trabajador con sede en Marruecos".

Saludos,
Access MVP 2017-2018
http://bit.ly/NckAccess

MexMan70
Colaborador
Mensajes: 95
Registrado: Mié Dic 09, 2015 10:35 pm

Re: Duda sobre consulta

Mensajepor MexMan70 » Mié Jun 06, 2018 8:26 pm

Buenas tardes a todos !

La solución se puede hacer en una sola consulta y en el diseñador gráfico de consultas, aquí la cuestión es que NO es para usuarios principiantes pues requiere de buen conocimiento en el manejo de Consultas en Access.

Con la tabla Proyectos deberás hacer una Consulta Principal y en la clausula Where (llamada Criterios en el diseñador Gráfico de Consultas) del campo Id_Proyecto deberás negar (Operador NOT) para obtener los proyectos de los empleados que NO pertenecen a X Sede. Ejemplo: Not In (Select ....). A este consulta se le llama de No Coincidentes

Para elegir la Sede de los empleados que no queremos es muy sencilla (aunque suene ilógico), ejemplo:
SELECT Id_Empleado FROM Empleados WHERE Sede = [NumSede]
Donde [NumSede] será una variable tecleada del País del Empleado.
Observación: En [NumSede] se asume que se tecleara el Numero del País y no el Nombre, para teclear el nombre puedes hacer un simple cambio de Campo y tratando la información como es adecuada:
Numero: Nada
Texto: Comillas simples o Dobles o su equivalente: Chr(34) (de las comillas dobles)
Fecha: Formato americano y encerradas en almohadillas.

Para elegir a los Empleados que pertenecen a X proyecto de los cuales seleccionamos previamente tienes que usar la Clausula IN, dicho esto te debería quedar así:
SELECT Id_Proyecto
FROM Empleados_Proyectos
WHERE Id_Empleado IN (SELECT Id_Empleado FROM Empleados WHERE Sede = [NumSede])
GROUP BY Id_Proyecto

Esta consulta (de Coincidentes) te devolverá los empleados que son originarios de X Sede. En el diseñador gráfico si haces clic con el botón derecho del ratón en un área de las Tablas te mostrara (siempre y cuando no sea en una tabla) o abajo de los Campo, criterios, etc. te saldra una menú contextual el cual puedes elegir el tipo de vista de la consulta (SQL, Hoja de datos, etc.). También hay un botón en la parte superior llamado Ver.

Saludos !

JackSparrow
Nivel 1
Mensajes: 4
Registrado: Lun Jun 04, 2018 11:54 am

Re: Duda sobre consulta

Mensajepor JackSparrow » Mar Jun 12, 2018 5:28 pm

Ahora SÍIII. :D :lol: Neckkito con tus indicaciones de la consulta previa y la consulta de no coincidentes lo he conseguido resolver.

Muchas gracias a todos por vuestras ayudas e indicaciones.

Un saludo!!


Volver a “Objetos Access”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados