Consulta que trata los espacios en blanco como si tuvieran todos los valores posibles.

Consulta que trata los espacios en blanco como si tuvieran todos los valores posibles.

Supongamos que tengo las siguientes tablas:

Campo_1 Campo_2 Campo_3
A B D
A C mi
A C F
z B GRAMO
z B h
z C I
Campo_1 Campo_2
A C
z B

Si los coloco en la ventana Diseño de consulta en Access y uno los dos campos con nombres comunes, puedo generar fácilmente una consulta que me muestre los registros que son 'AC' y 'ZB' (cuatro registros en total).

Esto es lo que quiero lograr: supongamos que en la segunda tabla, en el segundo registro, Campo_2 está Nulo/En Blanco. Quiero encontrar una manera de interpretar este campo nulo comotodovalores posibles (teniendo en cuenta las otras uniones). En este momento, si elimino el valor en ese campo y ejecuto la misma consulta, obviamente solo veo los registros 'A'. Como era de esperar, convertirlo en una unión externa en cualquier dirección no me da el resultado que quiero.

Supongo que otra forma de verlo es que quiero que funcione más como un filtro con lógica 'y' y 'o'. ¿Es esto posible/fácil de hacer en Access? ¿Sería mejor intentar hacer esto con un filtro avanzado en Excel?

Este ejemplo está obviamente simplificado: en mi industria, puede ser muchísimo más complicado. Un filtro avanzado funcionaría bien para algo pequeño como esto, pero mi tabla de "datos incompletos" (representada aquí por Tabla_2) podría tener decenas de miles de registros, y el conjunto de datos "completo" que necesitaría usar para expandirlo es cientos de miles de registros (al menos si tuviera que realizar una consulta que colocara todos los datos destacados en formato tabular).

Estaría encantado si alguien aquí se hubiera encontrado con este problema antes y tuviera una solución lista. Agradezco cualquier ayuda.

Respuesta1

Necesita editar su unión, presumiblemente, desde algo como esto:

SELECT Table1.*
FROM Table1 
INNER JOIN Table2 
ON Table2.Field_1 = Table1.Field_1
AND Table2.Field_2 = Table1.Field_2

A algo como esto:

SELECT Table1.*
FROM Table1 
INNER JOIN Table2 
ON Table2.Field_1 = Table1.Field_1
AND IIF(Table2.Field_2 IS NULL,Table1.Field_2,Table2.Field_2) = Table1.Field_2

Perdóname si esto no es exactamente correcto. Creo que no puedes usarlo COALESCEen Access y creo que debería ser IIFasí. Desafortunadamente, no he usado Access en muchos años.

De todos modos, el principio es que es necesario editar la combinación para que diga "Si el campo 2 de la tabla 2 es nulo, utilice el campo 2 de la tabla 1 en su lugar". Esto tiene el efecto de hacer coincidir cada fila de la Tabla1.

información relacionada