Fórum Ajuda com SQL (Count) #293199
26/08/2005
0
Select COUNT(DISTINCT R1.CODQUESTIONARIO) RESPOSTA
From OP_RESPOSTA R1, OP_RESPOSTA R2, OP_RESPOSTA R3
Where R1.CODPESQUISA = R2.CODPESQUISA
And R1.CODPESQUISA = R3.CODPESQUISA
And R1.CODCLIENTE = R2.CODCLIENTE
And R1.CODCLIENTE = R3.CODCLIENTE
And R1.CODQUESTIONARIO = R2.CODQUESTIONARIO
And R1.CODQUESTIONARIO = R3.CODQUESTIONARIO
And R1.CODPESQUISA = 16
And R1.CODCLIENTE = 1
And R1.CODPERGUNTA = 7
And R1.CODALTERNATIVA = 144
And R2.CODPERGUNTA = 13
And R2.CODALTERNATIVA IN (251,251,253)
And R3.CODPERGUNTA = 15
And R3.CODALTERNATIVA IN (282,283)
Explicando esse SQL tenho q contar qtos questionarios responderam a pergunta 7 com a alternativa 144 + pergunta 13 com as alternativas 251,251,253 + a pergunta 15 com as altenativas 282,283. O conteudo do IN () seria as repostas de multiplas escolhas.
O problema é o comando ´ IN (251,251,253)´ e o ´IN (282,283)´ pois ele está contando as respostas que tem, por exemplo: (251,251,253,254,255), (251,253,254), etc.
Eu precisaria contar apenas os questionarios que tenham exatamente essas alternaitvas respondidas.
Valeu! Obrigado!
OBS: D7 + Firebird
Rssampaio
Curtir tópico
+ 0Posts
26/08/2005
Rjun
Select COUNT(DISTINCT R1.CODQUESTIONARIO) RESPOSTA From OP_RESPOSTA R1, OP_RESPOSTA R2, OP_RESPOSTA R3 Where R1.CODPESQUISA = R2.CODPESQUISA And R1.CODPESQUISA = R3.CODPESQUISA And R1.CODCLIENTE = R2.CODCLIENTE And R1.CODCLIENTE = R3.CODCLIENTE And R1.CODQUESTIONARIO = R2.CODQUESTIONARIO And R1.CODQUESTIONARIO = R3.CODQUESTIONARIO And R1.CODPESQUISA = 16 And R1.CODCLIENTE = 1 And (R1.CODPERGUNTA = 7 And R1.CODALTERNATIVA = 144) And (R2.CODPERGUNTA = 13 And R2.CODALTERNATIVA IN (251,251,253)) And (R3.CODPERGUNTA = 15 And R3.CODALTERNATIVA IN (282,283) )
Gostei + 0
26/08/2005
Rssampaio
O problema é cada alternatina q tem dentro do ´IN´ e tive alguma delas em outros questionarios ele vai contar esse questionario.
E corrigindo ae a linha R2.CODALTERNATIVA IN (251,251,253)
seria isso: R2.CODALTERNATIVA IN (251,252,253), uma sequencia.
Valeu!
Gostei + 0
26/08/2005
Rjun
Para a pergunta 13 as respostas válidas são : 251, 252 e 253
Para a pargunte 15 as respostas válidas são : 282 e 283
Mas o select esta retornando para a pergunta 13 respostas entre 251 e 255?...é isso?
Gostei + 0
26/08/2005
Rssampaio
Se por Exemplo um outro questionario respondeu a pergunta 13 com as alternativas 251,252,253,254,255 ele tb está contando este questionario.
Se tiver outro questiona com as alternativas 253,254,255 ele tb conta.
As respostas de Multiplas escolha válida seria somente as alternativas (251,252,253) e (281,281) da pergunta 13 e 15 respectivamente.
Gostei + 0
26/08/2005
Rjun
13 251 13 252 13 253 13 254 13 255
É isso?
Gostei + 0
26/08/2005
Rssampaio
Cada resposta que é dada é uma linha na tabela.
Minha tabela de resposta tem os seguinte campos:
CODRESPOSTA INTEGER NOT NULL,
CODPERGUNTA INTEGER NOT NULL,
CODQUESTIONARIO INTEGER NOT NULL,
CODALTERNATIVA INTEGER,
DTARESPOSTA DATE
O CODRESPOSTA é um seguencial da tabela, PK.
Gostei + 0
26/08/2005
Rjun
Gostei + 0
26/08/2005
Rssampaio
blz!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)