Ir para conteúdo

Arquivado

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

Fernando José

Selecionar o ID de questionario que o usuario não tenha respondido

Recommended Posts

Galera,

Tenho duas tabelas, uma chamada questionario e outra questionario_usuario. Na tabela questionario eu crio vários questionários para o mesmo curso, e na tabela questionario_usuario eu salvo os questionarios que o usuario já respondeu.

 

TABELA - questionario

2qtvmhe.png

TABELA - questionario_usuario

2d8s183.png

 

Preciso fazer um SQL para selecionar apenas 1 questionario que o usuario não tenha respondido. No exemplo acima o usuario ja respondeu o questionario 1, entao teria que retornar apenas o código 2 - Questionário B.

 

Alguém poderia me ajudar?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um INNER JOIN traz tudo que exista correspondência em ambas as tabelas, para este caso você teria que fazer um "LEFT JOIN questionario_usuario ON questionario.codigo = questionario_usuario.questionario" e mostrar somente o que não tiver correspondência com a tabela questionario_usuario, por exemplo, "WHERE questionario_usuario.questionario IS NULL".

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT *

FROM questionario A

LEFFT JOIN questionario_usuario B

ON A.codigo = B.codigo

WHERE B.codigo IS NULL

 

então ele listara a questão 2 e 3

 

se vc quer apenas 1 questão utiliza LIMIT 1

se vc quer apenas 1 questão especifica utilize ORDER BY e crie uma coluna de ordem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

Muito obrigado pela ajuda.

 

Ficou assim:

SELECT *
FROM questionario A
LEFT JOIN questionario_usuario B ON A.codigo = B.questionario
WHERE B.codigo IS NULL
LIMIT 1 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

 

Coloquei o SQL em produção e achei um erro.

 

Acabei de fazer uma alteração, vou colocar em produção e ver se resolveu.

Ficou assim:

SELECT q. * 
						FROM questionario q
						WHERE q.curso = '".$curso."'
						AND q.codigo NOT 
						IN (
						SELECT questionario
						FROM questionario_usuario qu
						WHERE qu.usuario = '".$usuario."'
						)
						LIMIT 1

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.