Como hacer consulta hacer consulta con campos sin datos.

Los expertos.

Solicitando su ayuda nuevamente.

Tengo dos tablas EdificiosT (Son 1000 departamentos)con los campos: IdDepto autonumerico, NumEdificio, NumDepto, Nombre y Apellidos de texto

Y otra Tabla PagosCondominosT con los campos IdPago, IdDepto, Autonumericos, FechaPago campo Fecha y MontoPagado campo moneda, relacionadas con IdDepto.

Se puede hacer una consulta que muestre todos los condóminos de la tabla EdificiosT y todos los pagos de la tabla PagosCondominosT, aunque hay varios que no han generado pago alguno.

O sea, de 1000 pagan 900.

Sería posible hacer una consulta se muestren los 1000. Es decir, con pago y sin pago.

Para posteriormente hacer una consulta de referencias cruzadas mensual.

2 Respuestas

Respuesta
1

Esta clase de consultas se hacen con LEFT JOIN, quiere decir muestreme todos los registros de la tabla de la izquierda así no estén en la tabla de la derecha.

Le recomiendo crear una tabla de edificios para así tener un modelo relacional.

TABLAS

Prefiero trabajar con los id, aunque en esta imagen el NumEdificio es igual al idedificio no siempre va ser igual, toda vez, que se puede asignar cualquier código al NumEdificio.

RELACION ENTRE LAS TABLAS

DISEÑO DE LA CONSULTA

Se deben  hacer 2 LEFT JOIN. Uno entre la tabla tbledificios y EdificiosT, esto para que nos muestre todos los edificios así no tengan apartamento asignado.

Otro entre la tabla EdificiosT y PagosCondominiosT, esto para que nos muestre todos los EdificiosT así no tengan pago en la tabla PagosCondominiosT.

RESULTADO DE LA CONSULTA

Si quiere hacerlo con código SQL, se lo adjunto.

  Dim strSQl As String
  strSQL = "SELECT tbledificios.NumEdificio" & vbCrLf
  strSQL = strSQL & "           , tbledificios.idedificio" & vbCrLf
  strSQL = strSQL & "           , tbledificios.Edificio" & vbCrLf
  strSQL = strSQL & "           , EdificiosT.NumDepto" & vbCrLf
  strSQL = strSQL & "           , PagosCondominosT.FechaPago" & vbCrLf
  strSQL = strSQL & "           , PagosCondominosT.MontoPagado" & vbCrLf
  strSQL = strSQL & "        FROM tbledificios " & vbCrLf
  strSQL = strSQL & "   LEFT JOIN (EdificiosT " & vbCrLf
  strSQL = strSQL & "   LEFT JOIN PagosCondominosT " & vbCrLf
  strSQL = strSQL & "          ON EdificiosT.idDpto = PagosCondominosT.idDpto) " & vbCrLf
  strSQL = strSQL & "          ON tbledificios.idedificio = EdificiosT.idedificio;"

Y en formularios como origen de datos seria, algo como:

Me.Formulario.RecordSource=strSQl 

Respuesta
1

Lo normal es que el IdDepto de la tabla Condominios sea numérico, no autonumérico. UN departamento VARIOS recibos, como un cliente varias ventas, etc. Dicho esto, construyo la consulta( la tabla Clientes es la tuya Edificios y la tabla Ventas es la tuya Pagos...) como

Es decir que me muestre todos los registros de la tabla Edificios y sólo aquellos de la tabla Pagos que estén relacionados y

Luego ya depende de que quieras agruparlos o no.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas