problemas con select

05/08/2003 - 15:17 por Denny Torcates | Informe spam
Un saludo a toda la comunidad

Estimados amigos tengo un detalle con este select por que
tengo un sistema que controla facturas de un cliente
eldetalle esta en los siguiente:


la factura posee 3 detalles ,es decir ,que se facturan 3
servicios

aunado a esta la factura es cancelada con 3 ó mas
pagos,bien sea deposito,cheques o ambas (cheques y
deposito).Fijense en este select


"Select pagos.*,detalle.cod_servicio,detalle.monto_unit
from pagos,detalle where pagos.Nro_factura='504' and
pagos.transaccion='F' AND pagos.Regional='R1' and
detalle.nro_factura=pagos.nro_factura and
detalle.regional=pagos.regional and
detalle.transaccion=pagos.transaccion"

cuando ejecuto dicho select en QA el resultado de la
consulta encuentra
9 resultados del select cuando deberia conseguir "solo 3
pagos de acuerdo con los pagos relacionados"

Mi pregunta es:¿ que instruccion SQL debo utilizar para
obtener los resulatdos que deseo?

de antemano gracias
Denny Torcates.-
 

Leer las respuestas

#1 Emilio Boucau
05/08/2003 - 16:45 | Informe spam
Denny,

te recomiendo que codifiques de esta forma:

SELECT PAGOS.*, DETALLE.COD_SERVICIO, DETALLE.MONTO_UNIT
FROM PAGOS

INNER JOIN DETALLE
ON PAGOS.NRO_FACTURA = DETALLE.NRO_FACTURA
AND PAGOS.REGIONAL = DETALLE.REGIONAL
AND PAGOS.TRANSACCION = DETALLE.TRANSACCION

WHERE PAGOS.NRO_FACTURA = '504' AND
PAGOS.TRANSACCION = 'F' AND
PAGOS.REGIONAL = 'R1'

el optimizador hara un mejor trabajo con la consulta y quedara mas
claramente planteada la condicion del WHERE.
Yo hice esta prueba y ambos me devolvieron la cantidad correcta de filas
Fijate bien, porque debes tener algun error sutil en tu consulta.

SELECT COUNT(*)
FROM T_MODELOS_CIA
WHERE T_MODELOS_CIA.COMPANIA = '121' AND
T_MODELOS_CIA.VEHICULO_TIPO = 'AA' AND
T_MODELOS_CIA.VEHICULO_FABRICA = '024' AND
T_MODELOS_CIA.VEHICULO_MODELO = '100' AND
T_MODELOS_CIA.VEHICULO_MOTOR = 'N'

SELECT TM.*, TMC.*
FROM T_MODELOS_CIA AS TMC

INNER JOIN T_MODELOS AS TM
ON TMC.VEHICULO_TIPO = TM.VEHICULO_TIPO AND
TMC.VEHICULO_FABRICA = TM.VEHICULO_FABRICA AND
TMC.VEHICULO_MODELO = TM.VEHICULO_MODELO AND
TMC.VEHICULO_MOTOR = TM.VEHICULO_MOTOR

WHERE TMC.COMPANIA = '121' AND
TMC.VEHICULO_TIPO = 'AA' AND
TMC.VEHICULO_FABRICA = '024' AND
TMC.VEHICULO_MODELO = '100' AND
TMC.VEHICULO_MOTOR = 'N'


SELECT T_MODELOS.*, T_MODELOS_CIA.*
FROM T_MODELOS_CIA, T_MODELOS
WHERE T_MODELOS_CIA.COMPANIA = '121' AND
T_MODELOS_CIA.VEHICULO_TIPO = 'AA' AND
T_MODELOS_CIA.VEHICULO_FABRICA = '024' AND
T_MODELOS_CIA.VEHICULO_MODELO = '100' AND
T_MODELOS_CIA.VEHICULO_MOTOR = 'N' AND
T_MODELOS_CIA.VEHICULO_TIPO = T_MODELOS.VEHICULO_TIPO AND
T_MODELOS_CIA.VEHICULO_FABRICA = T_MODELOS.VEHICULO_FABRICA AND
T_MODELOS_CIA.VEHICULO_MODELO = T_MODELOS.VEHICULO_MODELO AND
T_MODELOS_CIA.VEHICULO_MOTOR = T_MODELOS.VEHICULO_MOTOR

Saludos !

Emilio Boucau
Microsoft MVP SQL Server
http://www.portalsql.com
PASS Spanish Group
http://www.sqlpass.org

Buenos Aires - Argentina

Preguntas similares