Access - clausula full join

 
Vista:

clausula full join

Publicado por ana (2 intervenciones) el 17/04/2007 16:19:23
hola,

estoy haciendo en access una consulta de varias tablas y quiero que me salgan todos los valores nulos o no.
en lugar de utilizar right join o left join, estoy utlizando full join, pero me da un error de sintasis. Este es programa por sql de access

SELECT Sum([margen clientes 2007].SumaDepv1) AS SumaDeSumaDepv11, Sum([margen clientes 2007].SumaDepc1) AS SumaDeSumaDepc11, Sum([margen clientes 2006].SumaDepc1) AS SumaDeSumaDepc1, Sum([margen clientes 2006].SumaDepv1) AS SumaDeSumaDepv1, [margen clientes 2007].clc, [margen clientes 2007].grupo
FROM [margen clientes 2007] FULL JOIN [margen clientes 2006] ON ([margen clientes 2007].clc = [margen clientes 2006].clc) AND ([margen clientes 2007].grupo = [margen clientes 2006].grupo)
GROUP BY [margen clientes 2007].clc, [margen clientes 2007].grupo;


gracias.
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

Simulación de FULL JOIN utilizando UNION en consulta

Publicado por Alejandro (4142 intervenciones) el 09/08/2023 00:05:20
En Microsoft Access, no existe un operador de "FULL JOIN" como en algunos otros sistemas de gestión de bases de datos. Sin embargo, puedes simular un "FULL JOIN" utilizando combinaciones de "LEFT JOIN" y "RIGHT JOIN" junto con la operación de "UNION". Aquí tienes cómo podrías modificar tu consulta para lograr el resultado que buscas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT Sum([margen clientes 2007].SumaDepv1) AS SumaDeSumaDepv11,
       Sum([margen clientes 2007].SumaDepc1) AS SumaDeSumaDepc11,
       Sum([margen clientes 2006].SumaDepc1) AS SumaDeSumaDepc1,
       Sum([margen clientes 2006].SumaDepv1) AS SumaDeSumaDepv1,
       [margen clientes 2007].clc, [margen clientes 2007].grupo
FROM [margen clientes 2007]
LEFT JOIN [margen clientes 2006]
       ON ([margen clientes 2007].clc = [margen clientes 2006].clc)
       AND ([margen clientes 2007].grupo = [margen clientes 2006].grupo)
GROUP BY [margen clientes 2007].clc, [margen clientes 2007].grupo
 
UNION
 
SELECT Sum([margen clientes 2007].SumaDepv1) AS SumaDeSumaDepv11,
       Sum([margen clientes 2007].SumaDepc1) AS SumaDeSumaDepc11,
       Sum([margen clientes 2006].SumaDepc1) AS SumaDeSumaDepc1,
       Sum([margen clientes 2006].SumaDepv1) AS SumaDeSumaDepv1,
       [margen clientes 2006].clc, [margen clientes 2006].grupo
FROM [margen clientes 2006]
LEFT JOIN [margen clientes 2007]
       ON ([margen clientes 2006].clc = [margen clientes 2007].clc)
       AND ([margen clientes 2006].grupo = [margen clientes 2007].grupo)
WHERE [margen clientes 2007].clc IS NULL
GROUP BY [margen clientes 2006].clc, [margen clientes 2006].grupo;

En esta consulta, estamos usando dos bloques SELECT y combinando los resultados con UNION. En el primer bloque SELECT, estamos realizando un LEFT JOIN de [margen clientes 2007] con [margen clientes 2006]. En el segundo bloque SELECT, estamos haciendo un LEFT JOIN inverso de [margen clientes 2006] con [margen clientes 2007] y filtrando solo las filas donde [margen clientes 2007].clc es NULL (lo que indica que no hay coincidencia en [margen clientes 2007]). Esto simula un "FULL JOIN" en Access.

Recuerda reemplazar "[margen clientes 2007]" y "[margen clientes 2006]" con los nombres reales de tus tablas en tu base de datos.
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