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
 

Leer las respuestas

#1 Carlos M. Calvelo
29/04/2008 - 23:38 | Informe spam
Hola Juan Carlos,

On 29 apr, 23:25, ElTurle wrote:
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.




Prueba con la condición CCC.Activa = -1 en el JOIN
en vez de en el WHERE.

LEFT JOIN CCC ON
Empresas.IdEmpresa = CCC.Id_Empresa AND CCC.Activa = -1

y ya verás como entonces va bien.

Piensa que las condiciones del where se aplican al
resultado del join, que no es lo mismo que una
condición que 'determina' el join.

Espero se entienda.

Saludos,
Carlos

Preguntas similares