Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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
)Opa, valeu ai Prog e Mário... funcionou perfeitamente
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