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

Concanetación ..



:)
Yo me me las invento así, al vuelo!

Saludos
Respuesta Responder a este mensaje
#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
Respuesta Responder a este mensaje
#8 ElTurle
30/04/2008 - 17:32 | Informe spam
On 30 abr, 13:42, "Eva" wrote:
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 mensajenews:
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



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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida