Forum Pplware

Versão Completa: SQL [Resolvido]
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Páginas: 1 2
Bom dia.

Estou a desenvolver uma BD e surgiu-me uma situação que não estou a conseguir resolver. É o seguinte:
Tenho um bloco de código em SQL, cujo output em termos de dados dá-me aquilo que quero, só que preciso que esse output me seja dado de outra maneira ou seja:

SELECT [Registo de Clientes].Nome, [Registo de Clientes].Idade, [Registo de Clientes].[Habilitações Literarias], [Registo de Clientes].Sexo, [Registo de Clientes].[1º Emprego], [Registo de Clientes].[Novo Emprego], [Registo de Clientes].Outros FROM [Registo de Clientes]
WHERE ((([Registo de Clientes].Idade) Like "*" & [Introduza a idade] & "*") AND (([Registo de Clientes].[Habilitações Literarias]) Like "*" & [Introduza as HL] & "*") AND (([Registo de Clientes].Sexo) Like "*" & [Introduza o Sexo] & "*"));

Isto dá-me aquilo que quero relativamente aos dados, mas o que eu quero é que através de uma funcção COUNT, saber o número de pessoas que correspondem a este output. Agora a questão é como é que faço isso e onde é que meto o SELECT COUNT

Desde já agradeço qualquer ajuda que me possam dar.

Cumprimentos.
O que pretendes é o número distinct de pessoas retornadas pelo Output?

No Select acima indicado há repetições de pessoas?
Se não houver podes facilmente ver isso pelo RecordCount retornado.

Se houverem duplicações de pessoas no Select acima, podes e deves fazer um DISTINCT [Registo de Clientes].Nome
Exactamente. Aquilo que eu quero é saber o nº de pessoas retornadas pelo output.

Não sei se percebi o que queres dizer com o recordcount.

Já agora esqueçi-me de referir no primeiro tópico, que a plataforma que estou a utilizar é o access 2003.
De qualquer forma acho que o que pretendes é mais algo do género seguinte, que vai-te retornar apenas as pessoas únicas que preenchem os requisitos (no entanto se tivesses um campo COD_PESSOA seria melhor, pois o NOME_PESSOA está sujeito a duplicações):

"SELECT DISCTINCT [Registo de Clientes].Nome FROM [Registo de Clientes]
WHERE ((([Registo de Clientes].Idade) Like "*" & [Introduza a idade] & "*") AND (([Registo de Clientes].[Habilitações Literarias]) Like "*" & [Introduza as HL] & "*") AND (([Registo de Clientes].Sexo) Like "*" & [Introduza o Sexo] & "*"))
GROUP BY [Registo de Clientes].Nome"


Entretanto, se trabalhares com Visual Studio ou algo do género, e tiveres acesso a Datatables podes trabalhar os dados a partir do RecordSet retornado com o uso das Datatables.
Obrigado, vou testar e já digo alguma coisa.
Funcionou, mas o output que me retorna é só os nomes das pessoas.

O que eu queria era o Número de pessoas.
"SELECT DISCTINCT (count([Registo de Clientes].Nome FROM [Registo de Clientes]))
WHERE ((([Registo de Clientes].Idade) Like "*" & [Introduza a idade] & "*") AND (([Registo de Clientes].[Habilitações Literarias]) Like "*" & [Introduza as HL] & "*") AND (([Registo de Clientes].Sexo) Like "*" & [Introduza o Sexo] & "*"))
GROUP BY [Registo de Clientes].Nome"

e assim?
Ainda não está a dar.
SELECT COUNT ([Registo de Clientes].Nome) AS [*Número de pessoas*]
FROM [Registo de Clientes]
WHERE ((([Registo de Clientes].Idade) Like "*" & [Introduza a idade] & "*") AND (([Registo de Clientes].[Habilitações Literarias]) Like "*" & [Introduza as HL] & "*") AND (([Registo de Clientes].Sexo) Like "*" & [Introduza o Sexo] & "*"))
GROUP BY [Registo de Clientes].Nome;

Deste modo já me está a dar qualquer coisa, ou seja, como ainda tenho a BD em fase de desenvolvimento, testei com 3 registos ficticios e para o output esperado que seria o valor "2", aparecem-me duas linhas com o valor "1".
e se fizeres primeiro o count e depois o distinct?
SELECT COUNT([Registo de Clientes].Nome) AS [*Número de pessoas*]
FROM [Registo de Clientes]
WHERE ((([Registo de Clientes].Idade) Like "*" & [Introduza a idade] & "*") AND (([Registo de Clientes].[Habilitações Literarias]) Like "*" & [Introduza as HL] & "*") AND (([Registo de Clientes].Sexo) Like "*" & [Introduza o Sexo] & "*"));

Assim já me dá o valor que eu quero.

Obrigado.

Cumprimentos.
Só um pequeno detalhe.. Não dês nomes às Tabelas e aos Campos com espaços e/ou caracteres especiais "ç,õ,ã", etc.
Páginas: 1 2
URL's de Referência