Select e count na mesma instrução

19/07/2017

0

Estou com algum erro nesse select e não consigo achar;

Vejam a tela

[IMG]http://i64.tinypic.com/ogmebk.png[/IMG]

Ao clicar na hora, devia me trazer tudo que tem gravado naquela hora e na data que selecionei no calendario, mas traz todos os dados da tabela.
Alguem sabe onde estou errando?

  with frmdm.qrAgenda do
   begin
     Close;
     SQL.Clear;
     SQL.Add('SELECT DATA, HORA, COD_PACIENTE, COD_PROCEDIMENTO,');
     SQL.Add('(SELECT COUNT(*) FROM AGENDA WHERE HORA = :HORA AND DATA = :DATA) AS QT_TOTAL');
     SQL.Add('FROM AGENDA');
     ParamByName('HORA').AsTime:= cdsHorariosHORA.AsDateTime;
     ParamByName('DATA').AsDate:= MonthCalendar1.Date;
     Open;
   end;
Renan

Renan

Responder

Posts

19/07/2017

Luiz Vichiatto

Você tem que colocar alias para a segunda tabela ''AGENDA'' chamada.
with frmdm.qrAgenda do
begin
Close;
SQL.Clear;
SQL.Add(''SELECT DATA, HORA, COD_PACIENTE, COD_PROCEDIMENTO,'');
SQL.Add(''(SELECT COUNT(*) FROM AGENDA ag WHERE ag.HORA = :HORA AND ag.DATA = :DATA) AS QT_TOTAL'');
SQL.Add(''FROM AGENDA'');
ParamByName(''HORA'').AsTime:= cdsHorariosHORA.AsDateTime;
ParamByName(''DATA'').AsDate:= MonthCalendar1.Date;
Open;
end;
Responder

19/07/2017

Renan

Infelizmente não deu certo, ainda traz todos os dados da tabela.
Responder

19/07/2017

Raimundo Pereira

BD acess?
Responder

19/07/2017

Renan

firebird.

no ibexpert uso assim e funciona, mas traz tudo do banco e preciso filtrar por data e hora

SELECT DATA, HORA, COD_PACIENTE, COD_PROCEDIMENTO, 
  (SELECT COUNT(*) FROM AGENDA B WHERE B.HORA = A.HORA AND B.DATA = A.DATA) AS QT_TOTAL 
FROM AGENDA A
Responder

19/07/2017

Luiz Vichiatto

Esta consulta funciona no IBExpert, correto?
firebird.

no ibexpert uso assim e funciona, mas traz tudo do banco e preciso filtrar por data e hora

SELECT DATA, HORA, COD_PACIENTE, COD_PROCEDIMENTO, 
  (SELECT COUNT(*) FROM AGENDA B WHERE B.HORA = A.HORA AND B.DATA = A.DATA) AS QT_TOTAL 
FROM AGENDA A


Experimente a mesma no seu código e faça o ''where'' em A, no código

SELECT DATA, HORA, COD_PACIENTE, COD_PROCEDIMENTO, 
(SELECT COUNT(*) FROM AGENDA B WHERE B.HORA = A.HORA AND B.DATA = A.DATA) AS QT_TOTAL 
FROM AGENDA A
WHERE A.DATA=:DATA AND A.HORA=:HORA

Responder

20/07/2017

Renan

Bom dia Luizaummm.

Era isso mesmo que estava faltando.

Muito obrigado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar