Ir para conteúdo

POWERED BY:

Arquivado

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

Quati Maldito

[Resolvido] Selecionar somente as perguntas sem respostas - RIGHT

Recommended Posts

Olá!

 

Levando em conta a estrutura:

 

TAB PERGUNTAS

id

pergunta

 

 

TAB RESPOSTAS

id

codigo_pergunta

resposta

 

 

qr = "SELECT * FROM Respostas RIGHT JOIN Perguntas ON Respostas.codigo_pergunta = Perguntas.id"

 

Isso me retorna os registros da tabela a direita(Perguntas) independentemente da tabela da esquerda(Respostas) ter registros ou naum.

 

Ou seja, se eu tiver 5 perguntas, e apenas 3 tiverem respostas, ele vai trazer as 5 perguntas mesmo assim.

 

A pergunta é: COMO FAÇO PARA RETORNAR SOMENTE OS REGISTROS DA TABELA PERGUNTAS QUE NÃO TENHA REGISTRO NA TAB RESPOSTAS. Ou seja, somente as perguntas sem respostas.

 

Num sei mais o q fazer galera..

 

Obrigado a todos.

 

Att.

 

Aguinaldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade nem o LEFT JOIN nem no caso usado o RIGHT JOIN resolverá o seu caso

 

mas pode fazer com uma subquery

 

SELECT * FROM PERGUNTAS WHERE PERGUNTAS.id NOT IN (SELECT codigo_pergunta FROM RESPOSTAS)

Compartilhar este post


Link para o post
Compartilhar em outros sites

complementando o sql do Marião

 

SELECT * FROM perguntas p WHERE NOT EXISTS(SELECT 1 FROM respostas r WHERE r.codigo_pergunta = p.id)

Compartilhar este post


Link para o post
Compartilhar em outros sites

complementando o sql do Marião

 

SELECT * FROM perguntas p WHERE NOT EXISTS(SELECT 1 FROM respostas r WHERE r.codigo_pergunta = p.id)

 

Perfeito, num precisei mudar uma "vírgula"!

 

Gostaria de entender melhor o código, alguém se habilita?

 

Obrigado a todos pela ajuda.

 

Att.

 

Aguinaldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

traduzindo para o português:

selecionar todas as colunas da tabela pergunta que não tenham registros na tabela respostas. Se você quiser somente as perguntas que tiveram respostas retire o NOT para tornar a condição verdadeira

 

A grande jogada está no where da where da condição EXISTS. Ao relacionar as duas tabelas através das colunas r.codigo_pergunta = p.id obtemos o resultado desejado. No SELECT 1 poderia ser SELECT nomedocampo, mas é desnecessário atribuir um valor muito onde o EXISTS necessita de um valor boleano(True = 1 ou False = NULL)

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.