Access - Consulta de access (solo expertos)

 
Vista:

Consulta de access (solo expertos)

Publicado por qpassa (1 intervención) el 14/02/2005 09:38:00
mi problema es el siguiente, tengo varias tablas en access que se relacionan entre si mediante uno o mas campos, cuando se relacionan solo por un campo no hay problema, este aparece cuando dos tablas se relacionan entre si con un campo de una y dos campos de otra, ej. la tabla condicionantes tiene el campo cod_condicionante y la tabla avisos tiene los campos condicionante1 y condicionante2, ambos campos deberían estar relacionandos con el campo cod_condicionante de la tabla condicionantes de forma que si el registro de la tabla avisos tiene condicionantes o no siga apareciendo cuando hago una consulta del tipo "muestra los condicionantes de los avisos entre la fecha tal y la fecha cual", claro me deben aparecer los avisos que tengan condicionantes y los que no. si en el diseño de la consulta digo que la relacion sea left join (o right join, no me acuerdo ahora) me sale un mensaje diciendo que tengo que hacer primero una subselect o no se q...

si alguien se ha enterado de lo que quiero decir y me puede ayudar muxas gracias, si no entendeis algo preguntarmelo que os lo intento volver a explicar, gracias de todas formas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Consulta con múltiples relaciones entre tablas

Publicado por Alejandro (4142 intervenciones) el 25/05/2023 19:00:20
Para realizar una consulta en Access que involucre relaciones entre tablas utilizando más de un campo de cada tabla, es necesario utilizar subconsultas o combinaciones de consultas para obtener los resultados deseados. Aquí tienes una posible solución:

1
2
3
4
5
6
7
8
9
10
SELECT A.*
FROM Avisos AS A
LEFT JOIN (
    SELECT C1.cod_condicionante
    FROM Condicionantes AS C1
    UNION
    SELECT C2.cod_condicionante
    FROM Condicionantes AS C2
) AS C ON A.condicionante1 = C.cod_condicionante OR A.condicionante2 = C.cod_condicionante
WHERE A.fecha BETWEEN #fecha1# AND #fecha2# OR C.cod_condicionante IS NULL

En este ejemplo, la consulta incluye una subconsulta que combina los campos `cod_condicionante` de la tabla `Condicionantes` utilizando la operación `UNION`. Luego, se realiza una combinación de la tabla `Avisos` con la subconsulta utilizando una relación de tipo `LEFT JOIN`. Esto permite obtener los registros de `Avisos` que tienen coincidencias en los campos `condicionante1` o `condicionante2`, así como también los registros que no tienen coincidencias en ninguno de los campos.

La cláusula `WHERE` se utiliza para filtrar los resultados según las fechas especificadas.

Recuerda reemplazar `Avisos`, `Condicionantes`, `condicionante1`, `condicionante2`, `cod_condicionante`, `fecha1` y `fecha2` con los nombres y valores adecuados en tu base de datos.

Espero que esta solución te ayude a obtener los resultados deseados en tu consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar