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

Fazer uma consulta para mostrar o cliente que não esta na tabela de pe


marcosfj1

Pergunta

Bom tenho duas tabela cliente e pedido, sempre q um cliente faz um pedido ele coloca seu id na tabela pedido, mas nem todo cliente faz pedido então nem todo cliente tem seu id na tabela pedido.

Eu queria uma condição q me mostrasse aqueles clientes que estao na tabela cliente, mas q não fizeram nenhum pedido ou seja que seu id não esta na tabela de pedido

alguém tem ideia de como fazer isso

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Basta utilizar o comando NOT IN na sua clausula where:

SELECT *
FROM CLIENTES
WHERE id NOT IN (SELECT DISTINCT cliente_id FROM tabela_pedidos)

Bom tenho duas tabela cliente e pedido, sempre q um cliente faz um pedido ele coloca seu id na tabela pedido, mas nem todo cliente faz pedido então nem todo cliente tem seu id na tabela pedido.

Eu queria uma condição q me mostrasse aqueles clientes que estao na tabela cliente, mas q não fizeram nenhum pedido ou seja que seu id não esta na tabela de pedido

alguém tem ideia de como fazer isso

Link para o comentário
Compartilhar em outros sites

  • 0
Basta utilizar o comando NOT IN na sua clausula where:

SELECT *
FROM CLIENTES
WHERE id NOT IN (SELECT DISTINCT cliente_id FROM tabela_pedidos)
Bom tenho duas tabela cliente e pedido, sempre q um cliente faz um pedido ele coloca seu id na tabela pedido, mas nem todo cliente faz pedido então nem todo cliente tem seu id na tabela pedido. Eu queria uma condição q me mostrasse aqueles clientes que estao na tabela cliente, mas q não fizeram nenhum pedido ou seja que seu id não esta na tabela de pedido alguém tem ideia de como fazer isso
Oi, pessoal! A resposta acima está correta mas gerará table scan, pois para cada registro lido em clientes terá que fazer nova pesquisa em pedidos e verificar se i id não está na lista retornada. este tipo de ação poderá "sentar" a máquina. Uma maneira mais eficaz é a exibida abaixo:
SELECT STRAIGHT_JOIN c.id_cliente 
FROM clientes c
LEFT JOIN pedido p ON p.id_cliente = c.cid_cliente
WHERE p.id_cliente IS NULL;

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu Denis não tinha pensado nisso!!!

Basta utilizar o comando NOT IN na sua clausula where:

SELECT *
FROM CLIENTES
WHERE id NOT IN (SELECT DISTINCT cliente_id FROM tabela_pedidos)
Bom tenho duas tabela cliente e pedido, sempre q um cliente faz um pedido ele coloca seu id na tabela pedido, mas nem todo cliente faz pedido então nem todo cliente tem seu id na tabela pedido. Eu queria uma condição q me mostrasse aqueles clientes que estao na tabela cliente, mas q não fizeram nenhum pedido ou seja que seu id não esta na tabela de pedido alguém tem ideia de como fazer isso
Oi, pessoal! A resposta acima está correta mas gerará table scan, pois para cada registro lido em clientes terá que fazer nova pesquisa em pedidos e verificar se i id não está na lista retornada. este tipo de ação poderá "sentar" a máquina. Uma maneira mais eficaz é a exibida abaixo:
SELECT STRAIGHT_JOIN c.id_cliente 
FROM clientes c
LEFT JOIN pedido p ON p.id_cliente = c.cid_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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...