Ir para conteúdo
Fórum Script Brasil
  • 0

SELECT não traz todos os dados


marcosfj1

Pergunta

Bom galera to com o seguinte problema...tenho cerca de 8000 clientes na empresa q estao ativos, fazendo uma seleção e depois um conta de datas em PHP eu consegui obter aqueles que fizeram compras na loja nos ultimos 4 meses, porem acho q tem algo errado na minha consulta, porque na hora de mostrar eu mostro aqueles que fizeram compra nos ultimos 4 meses e aqueles q já passaram desse tempo, e determino assim se o cara ta bloqueado(apos 4 meses) ou se esta desbloqueado(menos de 4 meses)

Mas a consulta só esta me trazendo um total de 2264 registros onde, 1160 são bloqueados e 1104 são desbloqueados...então a questao é onde estao os outros mais de 500 registros q deveriam estar sendo mostrados

Aqui vai minha consulta SQL

$sql="SELECT MAX(P.dt_pedido) AS dt_pedido, MAX(P.id_pedido) AS id_pedido, P.id_cliente, C.id_cliente, IFNULL(C.nome, C.razao_social) AS nome,
        C.email, C.st_ativo, COUNT(P.id_pedido) AS qtde
        FROM pedido P 
        INNER JOIN cliente C ON C.id_cliente = P.id_cliente
        WHERE dt_pedido IS NOT NULL
        GROUP BY P.id_cliente
        
        ORDER BY C.nome ASC";

Detalhe estou agrupando pelo id_cliente que esta na tabela pedido, ele é unico então cada cliente que fez uma compra esta com seu id la, portanto ou o cliente fez ou não fez a compra nos ultimo 4 meses e deveria ser mostrado...Mas deve ter algo faltando

alguém pode me ajudar?

Valeu

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Marcos, existe a possibilidade de algum cliente estar cadastrado porém não ter feito "NENHUMA" compra (ou seja : não há nenhum pedido com o seu ID) ?

Bom galera to com o seguinte problema...tenho cerca de 8000 clientes na empresa q estao ativos, fazendo uma seleção e depois um conta de datas em PHP eu consegui obter aqueles que fizeram compras na loja nos ultimos 4 meses, porem acho q tem algo errado na minha consulta, porque na hora de mostrar eu mostro aqueles que fizeram compra nos ultimos 4 meses e aqueles q já passaram desse tempo, e determino assim se o cara ta bloqueado(apos 4 meses) ou se esta desbloqueado(menos de 4 meses)

Mas a consulta só esta me trazendo um total de 2264 registros onde, 1160 são bloqueados e 1104 são desbloqueados...então a questao é onde estao os outros mais de 500 registros q deveriam estar sendo mostrados

Aqui vai minha consulta SQL

$sql="SELECT MAX(P.dt_pedido) AS dt_pedido, MAX(P.id_pedido) AS id_pedido, P.id_cliente, C.id_cliente, IFNULL(C.nome, C.razao_social) AS nome,
        C.email, C.st_ativo, COUNT(P.id_pedido) AS qtde
        FROM pedido P 
        INNER JOIN cliente C ON C.id_cliente = P.id_cliente
        WHERE dt_pedido IS NOT NULL
        GROUP BY P.id_cliente
        
        ORDER BY C.nome ASC";

Detalhe estou agrupando pelo id_cliente que esta na tabela pedido, ele é unico então cada cliente que fez uma compra esta com seu id la, portanto ou o cliente fez ou não fez a compra nos ultimo 4 meses e deveria ser mostrado...Mas deve ter algo faltando

alguém pode me ajudar?

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0
Marcos, existe a possibilidade de algum cliente estar cadastrado porém não ter feito "NENHUMA" compra (ou seja : não há nenhum pedido com o seu ID) ?

Poxa cara verdade tem este detalhe, porque se o cara não fez nenhum pedido então ele não vai estar na tabela de pedidos com seu id, logo não conseguirem pega-lo, então teria que ver também se o id do cara esta na tabela pedidos

valeu a dica

Cara to aqui quebrando a cabeça

Como eu poderia então fazer uma codição que somente pegasse aqueles clientes q nunca fizeram uma compra, no caso aqueles que estao na tabela clientes e que não estao na tabela de pedidos...como poderia fazer isso, porque ai teria uma noção de quantos existem

Editado por marcosfj1
Link para o comentário
Compartilhar em outros sites

  • 0
Como eu poderia então fazer uma codição que somente pegasse aqueles clientes q nunca fizeram uma compra, no caso aqueles que estao na tabela clientes e que não estao na tabela de pedidos...como poderia fazer isso, porque ai teria uma noção de quantos existem

A forma abaixo responde sua questão

SELECT STRAIGHT_JOIN c.id_cliente 
FROM cliente c
LEFT JOIN pedido p ON p.id_cliente = c.id_cliente
WHERE p.id_cliente IS NULL;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...