SELECT MYSQL DE CLIENTES QUE NAO COMPRAM
Tenho esse select aqui
[Ô]select s. Data,s. Id as Servico,c. Nome,count(se. idextintor)as Extintor ,s. Valor from servicos s,clientes c,servicos_extintores se where c. id = s. idcliente and s.id = se. id and s. data between [ô][Ô] & Format(DTPicker1.Value, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô] and [ô][Ô] & Format(DTPicker2.Value, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô] group by s. id order by s. data[Ô], Conexao)
Ele funciona perfeitamente
O que preciso agora é listar todos os clientes que não compram a mais de 12 meses, por isso coloquei esse select ai em cima para vocês terem um melhor entendimento
Não consigo construir esse select .
Alguém tem algum exemplo para eu ter um caminho a seguir.
Obrigado a todos
[Ô]select s. Data,s. Id as Servico,c. Nome,count(se. idextintor)as Extintor ,s. Valor from servicos s,clientes c,servicos_extintores se where c. id = s. idcliente and s.id = se. id and s. data between [ô][Ô] & Format(DTPicker1.Value, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô] and [ô][Ô] & Format(DTPicker2.Value, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô] group by s. id order by s. data[Ô], Conexao)
Ele funciona perfeitamente
O que preciso agora é listar todos os clientes que não compram a mais de 12 meses, por isso coloquei esse select ai em cima para vocês terem um melhor entendimento
Não consigo construir esse select .
Alguém tem algum exemplo para eu ter um caminho a seguir.
Obrigado a todos
Considerando que você queira assumir a data da máquina da pessoa, você pode usar o seguinte código:
SELECT
s.Data,
s.Id as Servico,
c. Nome,
count(se.idextintor)as Extintor
s.Valor
FROM
servicos s,
clientes c,
servicos_extintores se
WHERE
c.id = s.idcliente and
s.id = se.id and s.
s.data >= DATE_ADD(CURDATE(), INTERVAL -1 YEAR)
group by
s.id
order by
s.data
O comando DATE_ADD irá subtrair um ano em relação a data atual do servidor (que será obtido a partir da função CURDATE()).
SELECT
s.Data,
s.Id as Servico,
c. Nome,
count(se.idextintor)as Extintor
s.Valor
FROM
servicos s,
clientes c,
servicos_extintores se
WHERE
c.id = s.idcliente and
s.id = se.id and s.
s.data >= DATE_ADD(CURDATE(), INTERVAL -1 YEAR)
group by
s.id
order by
s.data
O comando DATE_ADD irá subtrair um ano em relação a data atual do servidor (que será obtido a partir da função CURDATE()).
Netmania
Obrigado pela orientação
Realmente não é o melhor caminho,nem tinha me atentado para isso
Então resolvi fazer diferente.
Voltei com 2 ditetimepickers e a consulta agora é :
Selecione quem não comprou nesse intervalo de datas.
Estou bem perto
Olha só
[Ô]select s. idcliente,c. nome from servicos s,clientes c where c. id = s. idcliente not in(select s. idcliente from servicos s,clientes c where c. id = s. idcliente and s.data between [ô][Ô] & Format(DTPicker1.Value, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô] and [ô][Ô] & Format(DTPicker2.Value, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô])[Ô], Conexao)
Aqui aparece todos os Id dos Clientes corretamente que não compraram na data selecionada entre o primeiro e o segundo DatetimePickers .Só o nome dos Clientes é que repete,ficando sempre o mesmo
Obrigado
Obrigado pela orientação
Citação::
Considerando que você queira assumir a data da máquina da pessoa.
Realmente não é o melhor caminho,nem tinha me atentado para isso
Então resolvi fazer diferente.
Voltei com 2 ditetimepickers e a consulta agora é :
Selecione quem não comprou nesse intervalo de datas.
Estou bem perto
Olha só
[Ô]select s. idcliente,c. nome from servicos s,clientes c where c. id = s. idcliente not in(select s. idcliente from servicos s,clientes c where c. id = s. idcliente and s.data between [ô][Ô] & Format(DTPicker1.Value, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô] and [ô][Ô] & Format(DTPicker2.Value, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô])[Ô], Conexao)
Aqui aparece todos os Id dos Clientes corretamente que não compraram na data selecionada entre o primeiro e o segundo DatetimePickers .Só o nome dos Clientes é que repete,ficando sempre o mesmo
Obrigado
Vamos a pergunta que não quer calar (risos):
Quais dados que você precisa voltar nesta consulta? Pelo que você fez neste exemplo ela irá repitir os dados de qualquer jeito.
Quais dados que você precisa voltar nesta consulta? Pelo que você fez neste exemplo ela irá repitir os dados de qualquer jeito.
Preciso do ID do cliente e do nome
Na tabela clientes existe
Id
Nome
Na tabela servicos existe
Idcliente
Data
nas duas tabelas logicamente existem mais campos ,mas o que preciso é só isso ai em cima
Aparece assim no datagrid
Id Nome
1 Condominio Edificio Sao Sebastiao
2 Condominio Edificio Sao Sebastiao
3 Condominio Edificio Sao Sebastiao
Sendo que o Id 1 está certo ,realmente é o Condominio Sao Sebastiao
os outros dois nomes nao aparecem .só aparece o nosso amigo Sao Sebastiao
Obrigado
Na tabela clientes existe
Id
Nome
Na tabela servicos existe
Idcliente
Data
nas duas tabelas logicamente existem mais campos ,mas o que preciso é só isso ai em cima
Aparece assim no datagrid
Id Nome
1 Condominio Edificio Sao Sebastiao
2 Condominio Edificio Sao Sebastiao
3 Condominio Edificio Sao Sebastiao
Sendo que o Id 1 está certo ,realmente é o Condominio Sao Sebastiao
os outros dois nomes nao aparecem .só aparece o nosso amigo Sao Sebastiao
Obrigado
Você vai fazer isso em tela ou impresso? Se for fazer em tela você pode fazer uma algo que em um grid apareca a relação de clientes e ao clicar neste, apareça um segundo grid os dados dos serviços que este prestou para que vocês possam conversar com o cliente. Assim evita a poluição dos dados na tela e a pessoa só pega os dados necessários.
Vou jogar as informações na tela.
A idéia é essa.Selecionar os Clientes que não compram a um determinado periodo.
O que se resume ao Id e ao Nome .
A partir daà ele seleciona um cliente e obtem as informações necessárias(Essa parte já está pronta)
Como te disse estou quase lá.
O id eu obtenho corretamente ,apenas o nome que sai errado.
Preciso do nome para fácil identificação do usuário.
O problema é que o nome está na tabela clientes.
Como tenho costume(Não sei ao certo se é correto ou incorreto.Nessa incógnita se possÃvel você me esclarecer tambem seria ótimo)não gravo o nome do cliente nas tabelas que esse venha a aparecer ,gravo apenas o Id)
Se pela tua experiência você me disser que não consigo.Nesse caso gravo o nome na respectiva tabela.
Obrigado mais uma vez
A idéia é essa.Selecionar os Clientes que não compram a um determinado periodo.
O que se resume ao Id e ao Nome .
A partir daà ele seleciona um cliente e obtem as informações necessárias(Essa parte já está pronta)
Como te disse estou quase lá.
O id eu obtenho corretamente ,apenas o nome que sai errado.
Preciso do nome para fácil identificação do usuário.
O problema é que o nome está na tabela clientes.
Como tenho costume(Não sei ao certo se é correto ou incorreto.Nessa incógnita se possÃvel você me esclarecer tambem seria ótimo)não gravo o nome do cliente nas tabelas que esse venha a aparecer ,gravo apenas o Id)
Se pela tua experiência você me disser que não consigo.Nesse caso gravo o nome na respectiva tabela.
Obrigado mais uma vez
Se você possui uma tabela de clientes, os dados do mesmo devem ser gravadas nela e quando precisar associar os dados nas demais tabelas, estas deverá receber somente o código (técnica de normalização dos dados).
Para pegar os clientes que não tiveram compras, você pode fazer o seguinte (selects seguem em anexo).
O segundo select eu não construi pois não seis quais dados você vai precisar, mas se quiser ajuda, mande a idéia do que deseja carregar e a estrutura das tabelas para construir uma consulta modelo.
[]'s
Netmania (OtacÃlio)
Para pegar os clientes que não tiveram compras, você pode fazer o seguinte (selects seguem em anexo).
O segundo select eu não construi pois não seis quais dados você vai precisar, mas se quiser ajuda, mande a idéia do que deseja carregar e a estrutura das tabelas para construir uma consulta modelo.
[]'s
Netmania (OtacÃlio)
Tópico encerrado , respostas não são mais permitidas