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

Sub-seleções usando o comando NOT IN


tiagojmg

Pergunta

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".

TABELA: pesquisas_respondidas
|-------------------------------------|
|    nome_pesquisa    |      login    |
|-------------------------------------|
|    minha pesquisa    |      tiago   |
|-------------------------------------|


TABELA: pesquisas
|---------------------|
|    nome_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?

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

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'tiagojmg' !

Isto está parecendo ser mais um GOTCHA do MySQL.

Um GOTCHA é um comportamento não esperado para um evento realizado. Não é um bug.

Vou testar em casa e te respondo depois.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...