Jump to content
Fórum Script Brasil
  • 0

Sub-seleções usando o comando NOT IN


tiagojmg

Question

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?

Edited by tiagojmg
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...