Select e count na mesma instrução
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?
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
Curtidas 0
Respostas
Luiz Vichiatto
19/07/2017
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;
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;
GOSTEI 0
Renan
19/07/2017
Infelizmente não deu certo, ainda traz todos os dados da tabela.
GOSTEI 0
Raimundo Pereira
19/07/2017
BD acess?
GOSTEI 0
Renan
19/07/2017
firebird.
no ibexpert uso assim e funciona, mas traz tudo do banco e preciso filtrar por data e hora
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
GOSTEI 0
Luiz Vichiatto
19/07/2017
Esta consulta funciona no IBExpert, correto?
Experimente a mesma no seu código e faça o ''where'' em A, no código
firebird.
no ibexpert uso assim e funciona, mas traz tudo do banco e preciso filtrar por data e hora
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
GOSTEI 0
Renan
19/07/2017
Bom dia Luizaummm.
Era isso mesmo que estava faltando.
Muito obrigado.
Era isso mesmo que estava faltando.
Muito obrigado.
GOSTEI 0