Ver Mensaje Individual
  #6  
Antiguo 28-07-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Hola,
he estado mirando por encima la consulta, y hay algo que me 'cruje'.

Código SQL [-]
from  
    (recibo r inner join registro_consulta_med c on r.nro_recibo=c.nro_recibo),
    c_externa c1,  // ** AQUI ME CRUJE **//
    especialidad e, // ** AQUI ME CRUJE **//
    doctor d // ** AQUI ME CRUJE **//
where 
    (
      (c.nro_consulta=c1.nro)and(c1.id_doctor=d.ci)and(d.esp=e.nro)and(cast(r.fecha as date) between :f1 and :f2)
      and
      ((r.cancelado=:valor)or(r.cancelado='M'))
Estás utilizando tablas en la consulta que no están incluidas en ningún inner join, por lo que te debe ( en teoría según lo que tengo entendido ) devolverte más filas de las que necesitas. Ahora no me sale el nombre de esa forma de hacer una select
SELECT * form TABLA1, TABLA2 -> devuelve el nº de registros de TABLA1 multiplicado por el nº de registros de TABLA2, que obviamente PUEDE que no sea el resultado que necesites.
Lo normal es hacer
SELECT * FROM TABLA1 T1
INNER JOIN TABLA2 T2 ON ( T1.ID=T2.ID)
WHERE condiciones
que devolverá los registros que existan en las dos tablas y cumplan las condiciones

Espero haberte ayudado.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita