SELECT COMPLICADO PARA FAZER

 Tópico anterior Próximo tópico Novo tópico

SELECT COMPLICADO PARA FAZER

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#326978 - 05/11/2009 09:35:36

LCSD
SAO PAULO
Cadast. em:Janeiro/2001


Pessoal, bom dia a todos.

Vamos imaginar o seguindo desenho de Database MySQL:

Tab. Clientes:                                       Tab. Consultas
Codigo                                                  codconsulta
Fantasia                                                codcliente
DataCadastro                                        resultado
Ativo                                                     data
                                                             hora


O que eu estou precisando fazer o seguinte:
Um relatrio de clientes onde no realizaro consultas em um determinado intervalo de datas, MAS.............
     1 regra: Tenho que atentar que dentro do intervalo selicionado, o cliente precisar estar ATIVO e estar cadastrado na tabela Clientes pelo menos at a data final cadastrada.
     2 regra: Precisaria que este select ficasse rpido, e tambm trazer no resultado a data da ltima utilizao do cliente ao sistema. Neste caso sei que terei que []Matar[] em um outro recodset mesmo, at a sem problema.....


Fico no aguardo de ajuda......

  
Quando precisar, pode contar comigo....
E quando precisar, no esquea de agradecer, pois a educao a ALMA DO NEGCIO...


Obrigado.

Luiz Cesar

#326980 - 05/11/2009 09:44:40

FBUR
TABOAO DA SERRA
Cadast. em:Maio/2009


Deixa ver se entendi: Um relatrio onde os clientes no podem consultar um determinado intervalo?

Se os clientes no podero fazer consultas nesse intervalo determinado, por que voc precisa saber se o fulano est ativo e cadastrado?

[]O seu sucesso est em funo da sua necessidade[]

#326982 - 05/11/2009 09:47:12

LCSD
SAO PAULO
Cadast. em:Janeiro/2001


No pe isso caro FBUR.

Eu preciso saber os clientes que no realizaram consultas num determinado perodo, para que seja feito um trabalho sobre esses clientes do pq no esto utilizando as consultas.

  
Quando precisar, pode contar comigo....
E quando precisar, no esquea de agradecer, pois a educao a ALMA DO NEGCIO...


Obrigado.

Luiz Cesar

#326983 - 05/11/2009 09:56:51

FBUR
TABOAO DA SERRA
Cadast. em:Maio/2009


Ha sim... :D Entendi.

Bom, parece que vc vai precisar de uma sub-consulta, aquelas com WHERE NOT EXISTS.

Esse intervalo de datas contnuo, tipo de 01/02/2009   30/04/2009?
Ou intercalado, tipo 01/02/2009 15/02/2009 E 10/03/2009 30/04/2009?

[]O seu sucesso est em funo da sua necessidade[]

#326984 - 05/11/2009 09:58:39

LCSD
SAO PAULO
Cadast. em:Janeiro/2001


O intervalo ser contnuo.
Se o usurio quiser []quebrado[], ele que faa a consulta quebrada uma de cada vez. Mas a tela ter s data inicial e final.

  
Quando precisar, pode contar comigo....
E quando precisar, no esquea de agradecer, pois a educao a ALMA DO NEGCIO...


Obrigado.

Luiz Cesar

#326992 - 05/11/2009 10:25:32

FBUR
TABOAO DA SERRA
Cadast. em:Maio/2009


Última edição em 05/11/2009 10:26:08 por FBUR

Acho que ficaria + - assim:

SELECT Tab.Clientes.Codigo FROM tab.Clientes INNER JOIN Tab.Consultas ON Tab.Clientes.Codigo = Tab.Consultas.codcliente WHERE NOT EXISTS (SELECT data FROM Tab.Consultas WHERE data >  sua_data_inicial AND data < sua_data_final) AND Tab.Clientes.ativo = []ativo[] AND Tab.Clientes.DataCadastro <= sua_data_final

[]O seu sucesso est em funo da sua necessidade[]

#326997 - 05/11/2009 11:11:27

LCSD
SAO PAULO
Cadast. em:Janeiro/2001


FBUR, negativo.


Assim ele no ir me retornar nenhum registro, pois no ter registros que atendo ao JOIN das 2 tabelas, pois seo cara no usou, lgicamente no ter registro dele no NOT EXISTS

  
Quando precisar, pode contar comigo....
E quando precisar, no esquea de agradecer, pois a educao a ALMA DO NEGCIO...


Obrigado.

Luiz Cesar

#326998 - 05/11/2009 11:19:48

MARCELO-TREZE
SAO VICENTE
Cadast. em:Abril/2009


s no entendi esta parte

Citação:
...o cliente precisar estar ATIVO e estar cadastrado na tabela Clientes pelo menos at a data final cadastrada


o que seria esta data final cadastrada?

________________________________________________________________________________________
O orgulho cega at os sbios, ao ponto de no percebam que no so to sbios como pensam.



#327000 - 05/11/2009 11:26:21

LCSD
SAO PAULO
Cadast. em:Janeiro/2001


Seria a DATA DE INCLUSO do cliente ao sistema.

Lgicamente, se o  cara foi inserido na tabela dia 04/11/2009, se eu tirar o relatrio do dia 03/11/2009 ele no poder aparecer, pois ele no estava cadastrado neste dia.
Mas se eu tirar o relatrio dia 05/11/2009 e ele no usou nos dias 04 e dia 05 at a gerao do relatrio, ele dever aparecer....

  
Quando precisar, pode contar comigo....
E quando precisar, no esquea de agradecer, pois a educao a ALMA DO NEGCIO...


Obrigado.

Luiz Cesar

#327001 - 05/11/2009 11:32:09

MARCELO-TREZE
SAO VICENTE
Cadast. em:Abril/2009


Última edição em 05/11/2009 11:34:57 por MARCELO-TREZE

e assim

[]SELECT Clientes.DataCadastro,Clientes.Ativo,Consultas.* FROM Clientes INNER JOIN Consultas ON (Clientes.DataCadastro < = [][] & Format(DataFim.Text,[]YYYY-MM-DD) & [][]) AND (Clientes.ativo = []True[]) AND (Consultas.Data BETWEEN [][] & Format(DataIni.Text,[]YYYY-MM-DD) & [][] AND [][] & Format(DataFim.Text,[]YYYY-MM-DD) & [][])[]




desta forma no daria certo

PS. No sei como vc est salvando no campo Ativo se 0 e1 ou True e False, ento altere conforme cadastra

________________________________________________________________________________________
O orgulho cega at os sbios, ao ponto de no percebam que no so to sbios como pensam.



#327002 - 05/11/2009 11:47:54

LCSD
SAO PAULO
Cadast. em:Janeiro/2001


Marcelo, ainda no funcionou....

Vamos imaginar os seguintes DADOS nas 2 tabelas:

Tab. Cliente
Codigo     Fantasia         Data Cadastro        Situacao
1               Cliente A           2009-10-01          L
2               Cliente B           2009-10-15          L
3               Cliente C           2009-11-01          L
4               Cliente D           2009-11-05          L

Tab. Consulta
CodConsulta             CodCliente               Resultado                        Data                       Hora
1                                 2                               kjhkjhjh                      2009-10-16            10:00:00
2                                 1                               kjhkjhjh                      2009-10-16            10:02:00
3                                 4                               kjhkjhjh                      2009-11-05            10:00:00
4                                 3                               kjhkjhjh                      2009-11-01            10:00:00


Com este desenho da tabela, eu queria fazer o seguinte:
Buscar com o intervalo de data de 01/10/2009 a 15/10/2009 e trazer o cliente 1 e 2, pois neste intervalo de datas, estes clientes no efetuaram consultas neste perodo.
Mas no trazer o cliente 3 e 4, pois at a data de 15/10/2009 eles no estavam cadastrados na tabela de cliente.



Acho que agora est melhor explicado....

  
Quando precisar, pode contar comigo....
E quando precisar, no esquea de agradecer, pois a educao a ALMA DO NEGCIO...


Obrigado.

Luiz Cesar

 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por LCSD em 05/11/2009 16:13:06