Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Pessoal, postei o mesmo tópico na categoria ASP, como ninguém respondeu, depois olhando melhor achei que poderia estar nesta categoria também, enfim segue a dúvida:
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.
o banco é mysql.
Num sei mais o q fazer galera..
Obrigado a todos.
Att.
Aguinaldo
ou (se suportar tb)
SELECT id, pergunta
FROM Perguntas as p
WHERE p.id NOT EXISTS (SELECT codigo_pergunta FROM Respostas as r WHERE p.id = r.id)
Obrigado a todos, isso aqui resolveu:
"SELECT * FROM perguntas p WHERE NOT EXISTS(SELECT 1 FROM respostas r WHERE r.codigo_pergunta = p.id)"
Num deu tempo de testar as alternativas postadas aqui, mas agradeço muito e certamente será de grande utilidade para outros zés como eu..hehehe
Obrigado.
Ola Agnaldo
Não sei se entendi bem, mas dependendo da versão do teu MySQL tu pode usar uma subquery
algo do tipo
SELECT id, pergunta FROM Perguntas as p WHERE p.id NOT IN(SELECT codigo_pergunta FROM Respostas)