ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

SELCT com três tabelas

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
mrjorio
Novato
Novato


Registrado: Segunda-Feira, 24 de Setembro de 2012
Mensagens: 85

MensagemEnviada: Ter Ago 06, 2013 11:28 pm    Assunto: SELCT com três tabelas Responder com Citação

Boa noite.

Estou precisando fazer um select de forma que eu consiga compilar dados de uma tabela (presença) organizados por critérios constantes em outras duas tabelas (cadastro e reuniões).

Tabelas:
A) Presenca
a1- matricula (fpK)
a2- datareunião (fPK)

B) Cadastro
b1 - matricula (pk)
b2 - nome
b3 - categoria
b4 - datainicio
b5 - data final

C) Reuniao
c1- datareuniao
c2 - tipo
c3 - local

A consulta é:

Quantas presencas o cliente da categoria "A" teve nas reuniões realizadas de dd/mm/yyyy(datainicio) a dd/mm/yyyy(datafinal) que são do tipo "X".

A ideia de retorno no query é a seguinte:

matricula| Total

Consegui com muitas linhas de código no Delphi XE2 fazer essa consulta, porém gostaria de fazer com a SQL.

Utilizo o SQLite3 e Delphi XE2

Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9099
Localização: Sinop-MT

MensagemEnviada: Qua Ago 07, 2013 8:11 am    Assunto: Responder com Citação

um exemplo:

Código:
SELECT presenca.*, cadastro.*, reuniao.*
FROM presenca
   INNER JOIN cadastro ON cadastro.matricula = presenca.matricula
   INNER JOIN reuniao ON reuniao.datareuniao = presenca.datareuniao
WHERE cadastro.matricula = "A"
   AND reuniao.datareuniao BETWEEN "2013-01-01" AND "2013-01-31"
   AND reuniao.tipo = "X"
ORDER BY cadastro.nome


depois q vc tiver o resultado completo, vc pode mudar o sql pra usar as funcoes de agregacao: SUM, COUNT, AVG... em conjunto com o GROUP BY
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mrjorio
Novato
Novato


Registrado: Segunda-Feira, 24 de Setembro de 2012
Mensagens: 85

MensagemEnviada: Sáb Ago 10, 2013 6:44 pm    Assunto: Responder com Citação

Joemil,

Boa noite,

Não funcionou.

Aproveitando, no caso das datas estarem dentro da tabela cadastro, como ficaria a SQL?



joemil escreveu:
um exemplo:

Código:
SELECT presenca.*, cadastro.*, reuniao.*
FROM presenca
   INNER JOIN cadastro ON cadastro.matricula = presenca.matricula
   INNER JOIN reuniao ON reuniao.datareuniao = presenca.datareuniao
WHERE cadastro.matricula = "A"
   AND reuniao.datareuniao BETWEEN "2013-01-01" AND "2013-01-31"
   AND reuniao.tipo = "X"
ORDER BY cadastro.nome


depois q vc tiver o resultado completo, vc pode mudar o sql pra usar as funcoes de agregacao: SUM, COUNT, AVG... em conjunto com o GROUP BY
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB