Quando tento executar uma query muito grande tenho a impressão que o mssql_query não é executado corretamente pois a quantidade de linha sempre é igual a zero.
Porém quando copio a query e executo direto no SQL é retornado várias linhas.
$query="select distinct cd_id ,cd_CallerId ,cd_CalledDevice ,cd_AnsweringDevice ,cd_IsIncoming ,cr_id ,cr_Result ,cpn_id ,cpn_name ,convert(varchar,cd_StartTime,120)as cd_StartTime ,convert(varchar,cd_RingStartTime,120)as cd_RingStartTime ,convert(varchar,cd_AnswerTime,120)as cd_AnswerTime ,convert(varchar,cd_EndTime,120)as cd_EndTime ,ra_id ,ra_Fullname ,CONVERT(float, case when cd_ringstarttime=0 then 0 else case when isnull(ucd_endtime,0)=0 then (cd_ringstarttime-cd_starttime) else (cd_ringstarttime-ucd_endtime) end end)*84600 as TF ,case when cd_cr_id=1 then (convert(float,cd_answertime-cd_ringstarttime)*24*60*60) else 0 end as TT ,case when (cd_cr_id=1 or cd_cr_id=6) then (convert(float,cd_endtime-cd_answertime)*24*60*60) else 0 end as TA ,CONVERT(float, case when isnull(cd_answertime,0)=0 then 0 else (case when isnull(ucd_endtime,0)=0 then (cd_answertime-cd_starttime) else (cd_answertime-ucd_endtime) end ) end)*84600 as TE ,convert(float, (cd_EndTime-cd_StartTime)- (case when isnull(ucd_endtime,0)=0 then 0 else (ucd_endtime-ucd_ringstarttime) end) )*84600 as tot, cq_qualification, cd_releasingDevice FROM tbl_CallData inner join tbl_ACDCallData on (cd_id = rcd_cd_id ) left join tbl_Agents on (ra_id = rcd_ra_id ) left join tbl_Campaigns on (tbl_ACDCallData.rcd_cpn_id = tbl_Campaigns.cpn_id ) left join tbl_callresult on (cr_id = cd_cr_id) left join tbl_UraCallData on (cd_id = ucd_cd_id) left join tbl_CallQualificationData on (rcd_cd_id = cqd_cd_id) left join tbl_CallQualifications on (cqd_cq_id = cq_id) WHERE cd_EndTime >= cd_StartTime AND (cd_EndTime - cd_StartTime) >= 0 AND cd_EndTime is not null and convert(float,cd_endtime-cd_starttime)*24*60*60 < 2*60*60 and cd_StartTime>='2010/11/26 00:00' and cd_StartTime<'2010/12/31 00:00' AND convert(varchar,cd_startTime,108)>'07:00' AND convert(varchar,cd_startTime,108)<'24:00' and (rcd_cpn_id = 1 or rcd_cpn_id = 2 or rcd_cpn_id = 3 or rcd_cpn_id = 4 or rcd_cpn_id = 5 or rcd_cpn_id = 6 or rcd_cpn_id = 7 ) and (0=1 or 1=1 ) ORDER BY cd_starttime ";
Pergunta
fe_sp
Quando tento executar uma query muito grande tenho a impressão que o mssql_query não é executado corretamente pois a quantidade de linha sempre é igual a zero.
Porém quando copio a query e executo direto no SQL é retornado várias linhas.
Quando uso o SQL Server 7 funciona corretamente.
Utilizo:
<php
$db=mssql_connect("MEUPC\SQLEXPRESS","login","password");
if (!$db)
{
}
else
{
}
$query="select distinct cd_id ,cd_CallerId ,cd_CalledDevice ,cd_AnsweringDevice ,cd_IsIncoming ,cr_id ,cr_Result ,cpn_id ,cpn_name ,convert(varchar,cd_StartTime,120)as cd_StartTime ,convert(varchar,cd_RingStartTime,120)as cd_RingStartTime ,convert(varchar,cd_AnswerTime,120)as cd_AnswerTime ,convert(varchar,cd_EndTime,120)as cd_EndTime ,ra_id ,ra_Fullname ,CONVERT(float, case when cd_ringstarttime=0 then 0 else case when isnull(ucd_endtime,0)=0 then (cd_ringstarttime-cd_starttime) else (cd_ringstarttime-ucd_endtime) end end)*84600 as TF ,case when cd_cr_id=1 then (convert(float,cd_answertime-cd_ringstarttime)*24*60*60) else 0 end as TT ,case when (cd_cr_id=1 or cd_cr_id=6) then (convert(float,cd_endtime-cd_answertime)*24*60*60) else 0 end as TA ,CONVERT(float, case when isnull(cd_answertime,0)=0 then 0 else (case when isnull(ucd_endtime,0)=0 then (cd_answertime-cd_starttime) else (cd_answertime-ucd_endtime) end ) end)*84600 as TE ,convert(float, (cd_EndTime-cd_StartTime)- (case when isnull(ucd_endtime,0)=0 then 0 else (ucd_endtime-ucd_ringstarttime) end) )*84600 as tot, cq_qualification, cd_releasingDevice FROM tbl_CallData inner join tbl_ACDCallData on (cd_id = rcd_cd_id ) left join tbl_Agents on (ra_id = rcd_ra_id ) left join tbl_Campaigns on (tbl_ACDCallData.rcd_cpn_id = tbl_Campaigns.cpn_id ) left join tbl_callresult on (cr_id = cd_cr_id) left join tbl_UraCallData on (cd_id = ucd_cd_id) left join tbl_CallQualificationData on (rcd_cd_id = cqd_cd_id) left join tbl_CallQualifications on (cqd_cq_id = cq_id) WHERE cd_EndTime >= cd_StartTime AND (cd_EndTime - cd_StartTime) >= 0 AND cd_EndTime is not null and convert(float,cd_endtime-cd_starttime)*24*60*60 < 2*60*60 and cd_StartTime>='2010/11/26 00:00' and cd_StartTime<'2010/12/31 00:00' AND convert(varchar,cd_startTime,108)>'07:00' AND convert(varchar,cd_startTime,108)<'24:00' and (rcd_cpn_id = 1 or rcd_cpn_id = 2 or rcd_cpn_id = 3 or rcd_cpn_id = 4 or rcd_cpn_id = 5 or rcd_cpn_id = 6 or rcd_cpn_id = 7 ) and (0=1 or 1=1 ) ORDER BY cd_starttime ";
$db_result=mssql_query($query,$db);
$rows=mssql_num_rows($db_result);
for($i=0;$i<$rows;$i++)
echo "<br>".mssql_result($db_result,$i,1);
?>
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.