Ir para conteúdo

POWERED BY:

Arquivado

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

Kika_Epilética

Retornar a quantidade de campos em branco

Recommended Posts

Bom dia !!

 

Me encontro com um seguinte problema :

 

Tenho um formulário de cadastro com os seguintes campos : Nome, sobrenome, sexo, idade, endereço, e-mail.

Tenho que fazer um relatório com as seguintes condições :

 

* Os 4 campos principais são - Nome, sobrenome, sexo e idade. Será necessário fazer 4 selects diferentes, com as seguintes cláusulas :

 

- Select 1 : Verificar a quantidade de formulários preenchidos que tiveram (apenas)um desses 4 campos em branco;

- Select 2 : Verificar a quantidade de formulários preenchidos que tiveram (apenas)dois desses 4 campos em branco;

- Select 3 : Verificar a quantidade de formulários preenchidos que tiveram (apenas)três desses 4 campos em branco;

- Select 4 : Verificar a quantidade de formulários preenchidos que tiveram quatro desses 4 campos em branco;

 

A primeira select que eu estava tentando fazer era da seguinte maneira :

 

 

SELECT count(*)
FROM Cadastro
WHERE (Nome = ' ' )  OR (Sobrenome = ' ' ) OR (sexo = ' ') OR (idade = ' ')
AND dataInclusao between ' 01/01/2007 ' and ' 31/03/2007 '

Mas havia me esquecido que quando o "OR" é utilizado, se as condições estiverem verdadeiras, ele continua "concatenando" com as posteriores. Não sei como posso resolver essa questão. Alguém sabe como poderei fazer isso ?

 

Grata, http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Kika ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para quem interessar, aí vai a solução :

 

Se a tabela não existir, crie-a e insira valores (apenas se quiser testar =P) :

 

Code Snippet

CREATE TABLE tbl (C1 CHAR(1), C2 CHAR(1), C3 CHAR(1), C4 CHAR(1))

INSERT INTO tbl VALUES ('1', '2', '3', '4')
INSERT INTO tbl VALUES ('1', '2', '3', '')
INSERT INTO tbl VALUES ('1', '', '3', '4')
INSERT INTO tbl VALUES ('1', '2', '', '')
INSERT INTO tbl VALUES ('', '', '3', '4')
INSERT INTO tbl VALUES ('1', '', '', '')
INSERT INTO tbl VALUES ('', '2', '', '')
INSERT INTO tbl VALUES ('', '', '', '')

Selecionando :

 

-- Selecionar os registros que tem os quatro campos em branco

SELECT C1, C2, C3, C4 
FROM tbl
WHERE C1 + C2 + C3 + C4 = ''

 
-- Selecionar os registros que tem os três campos em branco

SELECT C1, C2, C3, C4 
FROM tbl
WHERE
CASE WHEN C1 = '' THEN 1 ELSE 0 END +
CASE WHEN C2 = '' THEN 1 ELSE 0 END +
CASE WHEN C3 = '' THEN 1 ELSE 0 END +
CASE WHEN C4 = '' THEN 1 ELSE 0 END = 3


-- Selecionar os registros que tem os dois campos em branco

SELECT C1, C2, C3, C4 
FROM tbl
WHERE
CASE WHEN C1 = '' THEN 1 ELSE 0 END +
CASE WHEN C2 = '' THEN 1 ELSE 0 END +
CASE WHEN C3 = '' THEN 1 ELSE 0 END +
CASE WHEN C4 = '' THEN 1 ELSE 0 END = 2

 

-- Selecionar os registros que tem um campo em branco

SELECT C1, C2, C3, C4 
FROM tbl
WHERE
CASE WHEN C1 = '' THEN 1 ELSE 0 END +
CASE WHEN C2 = '' THEN 1 ELSE 0 END +
CASE WHEN C3 = '' THEN 1 ELSE 0 END +
CASE WHEN C4 = '' THEN 1 ELSE 0 END = 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal Kika, muito criativa a solução, bom que compartilhou

 

t+

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.