Estou usando uma tabela com nome "pesquisas_respondidas" para verificar se um usuário já respondeu uma pesquisa. Por exemplo, no caso abaixo, o usuário com login "tiago" respondeu a pesquisa "minha pesquisa".
Na tabela "pesquisas" estão os nomes de todas as pesquisas cadastradas no sistema.
Quero listar as pesquisas que o usuário não respondeu, e uso a sequinte SQL:
SELECT pesquisas.nome_pesquisa
FROM pesquisas
WHERE pesquisas.nome_pesquisa NOT
IN(
SELECT pesquisas_respondidas.nome_pesquisa
FROM pesquisas_respondidas
WHERE pesquisas_respondidas.nome_pesquisa='minha pesquisa'
AND pesquisas_respondidas.login='meu_login'
)
O problema é que quando a tabela "pesquisas_respondidas" estávazia, o comando retorna um conjunto vazio. Eu esperava que voltasse todas as pesquisas, pois o usuário ainda não respondeu nenhuma.
O mesmo comando funciona quando a tabela tem um ou mais registros inseridos. Por que não funciona quando a tabela está vazia?
Pergunta
tiagojmg
Estou usando uma tabela com nome "pesquisas_respondidas" para verificar se um usuário já respondeu uma pesquisa. Por exemplo, no caso abaixo, o usuário com login "tiago" respondeu a pesquisa "minha pesquisa".
Na tabela "pesquisas" estão os nomes de todas as pesquisas cadastradas no sistema. Quero listar as pesquisas que o usuário não respondeu, e uso a sequinte SQL:O problema é que quando a tabela "pesquisas_respondidas" está vazia, o comando retorna um conjunto vazio. Eu esperava que voltasse todas as pesquisas, pois o usuário ainda não respondeu nenhuma.
O mesmo comando funciona quando a tabela tem um ou mais registros inseridos. Por que não funciona quando a tabela está vazia?
Editado por tiagojmgLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados