Problemas con instrucción SQL

29/04/2008 - 23:25 por ElTurle | Informe spam
Hola:

Tengo la siguiente instrucción sql:

SELECT Vencimientos.FEmision, Vencimientos.FVencimiento,
Empresas.Nombre, Vencimientos.NumEmpresa, Vencimientos.Factura,
Vencimientos.Total, Vencimientos.Remesa, Vencimientos.Banco,
[NumEntidad] & "-" & [NumSucursal] & "-" & [DC] & "-" & [Cuenta] AS
CtaCargo, CCC.Activa
FROM (Vencimientos INNER JOIN Empresas ON Vencimientos.NumEmpresa Empresas.IdEmpresa) LEFT JOIN CCC ON Empresas.IdEmpresa CCC.Id_Empresa
WHERE (((Vencimientos.Remesa)>0) AND
((Vencimientos.Banco)=DLookUp("[IdEmpresa]","Empresas","Remesas -1")) AND ((CCC.Activa)=-1));



En esta instrucción vinculo tres tablas Empresas y Vencimientos con
unión Inner Join y Empresas con CCC en unión left Join. La segunda
unión la hago así porque hay empresas que no tienen metida ninguna
cuenta bancaria, por lo que necesito que me muestre el registro aunque
no tenga cuenta bancaria. Pero la tabla de CCC admite varias cuentas
bancarias por empresa y mediante el campo Activa indico la cuenta en
la que se debe hacer el cargo y al poner la clausula en WHERE
CCC.Activa = -1 , ya no me saca los registros de vencimientos que no
tienen cuenta bancaria.

Por lo que lo que necesitaría que me hiciese la instrucción sql es:
que si la empresa no tiene cuenta me saque el registro sin cuenta y
que si tiene varias cuentas me saque aquella que tenga marcada como
activa.

Un Saludo y muchas gracias.
Juan Carlos

Preguntas similare

Leer las respuestas

#6 Carlos M. Calvelo
30/04/2008 - 10:42 | Informe spam
Mostrar la cita
:)
Yo me me las invento así, al vuelo!

Saludos
#7 Eva
30/04/2008 - 13:42 | Informe spam
Hola

Se me ocurren dos:

1. Crea una consulta sobre CCC que solo devuelva los registros con Activa
= -1 y utilízala en vez de la tabla en tu consulta final. Haces la selección
antes del Left Join, devolverá la activa para los coincidentes y null (lo
que tú quieres) para los no coincidentes.

2. Cambia la instrucción por AND ((NZ(CCC.Activa,-1))=-1));

Espero te sirva, un saludo

Eva.

"ElTurle" escribió en el mensaje
news:
Hola:

Tengo la siguiente instrucción sql:

SELECT Vencimientos.FEmision, Vencimientos.FVencimiento,
Empresas.Nombre, Vencimientos.NumEmpresa, Vencimientos.Factura,
Vencimientos.Total, Vencimientos.Remesa, Vencimientos.Banco,
[NumEntidad] & "-" & [NumSucursal] & "-" & [DC] & "-" & [Cuenta] AS
CtaCargo, CCC.Activa
FROM (Vencimientos INNER JOIN Empresas ON Vencimientos.NumEmpresa Empresas.IdEmpresa) LEFT JOIN CCC ON Empresas.IdEmpresa CCC.Id_Empresa
WHERE (((Vencimientos.Remesa)>0) AND
((Vencimientos.Banco)=DLookUp("[IdEmpresa]","Empresas","Remesas -1")) AND ((CCC.Activa)=-1));



En esta instrucción vinculo tres tablas Empresas y Vencimientos con
unión Inner Join y Empresas con CCC en unión left Join. La segunda
unión la hago así porque hay empresas que no tienen metida ninguna
cuenta bancaria, por lo que necesito que me muestre el registro aunque
no tenga cuenta bancaria. Pero la tabla de CCC admite varias cuentas
bancarias por empresa y mediante el campo Activa indico la cuenta en
la que se debe hacer el cargo y al poner la clausula en WHERE
CCC.Activa = -1 , ya no me saca los registros de vencimientos que no
tienen cuenta bancaria.

Por lo que lo que necesitaría que me hiciese la instrucción sql es:
que si la empresa no tiene cuenta me saque el registro sin cuenta y
que si tiene varias cuentas me saque aquella que tenga marcada como
activa.

Un Saludo y muchas gracias.
Juan Carlos
#8 ElTurle
30/04/2008 - 17:32 | Informe spam
On 30 abr, 13:42, "Eva" wrote:
Mostrar la cita
Muchas gracias a todos.

Como bien comentais, lo estoy utilizando en Access.

Pruebo lo que me habeis dicho y os comento.

Muchas Gracias.
Juan Carlos
Ads by Google
Search Busqueda sugerida