Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Miguel Laforet

[Resolvido] trazer registros que não tenham relacionamento com ou

Recommended Posts

Fala galera, estou com um problema e vou tentar explicar:

 

eu faço uma pesquisa na tabela "fotos", na tabela "fotos_x_usuarios" e na tabela "usuarios"

 

na tabela fotos eu tenho os dados das fotos, na tabela usuarios eu tenho os dados do usuario, e na tabela fotos_x_usuarios eu relaciono as fotos que os usuarios usam.

 

como eu faço pra trazer todos os usuarios que NÃO tem fotos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja quais sao os campos que relacionam os usuarios nas tabelas usuarios e "fotos_x_usuarios"

 

Ai teriamos

 

SELECT CAMPOS FROM usuarios WHERE CAMPO_USUARIO_NA_TABELA_USUARIOS NOT IN (SELECT DISTINCT(CAMPO_USUARIO_NA_TABELA_FOTOS_USUARIOS) FROM fotos_x_usuarios )

 

O pulo do gato aqui é o NOT IN

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica de tuning:

 

SELECT usuario_id, nome, email 
FROM usuarios 
WHERE NOT EXISTS (
  SELECT 1 FROM fotos_x_usuarios 
  WHERE usuario_id = usuarios.usuario_id
)

 

Mesmo resultado do SQL apresentado pelo Mario, com melhor desempenho.

 

Se preferir o SELECT apresentado pelo Mario, o mesmo também pode ser melhorado incluindo um WHERE no subselect, equivalente ao WHERE do subselect da solução que eu apresentei. Assim:

 

SELECT usuario_id, nome, email 
FROM usuarios 
WHERE usuario_id NOT IN (
  SELECT DISTINCT(usuario_id) 
  FROM fotos_x_usuarios 
  WHERE usuario_id = usuarios.usuario_id
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.