SQL [Resolvido]
|
01-04-2010, 09:31
(Esta mensagem foi modificada pela última vez a: 01-04-2010 11:06 por progster.)
Mensagem: #1
|
|||
|
|||
SQL [Resolvido]
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. Progster |
|||
01-04-2010, 09:37
Mensagem: #2
|
|||
|
|||
RE: SQL
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 |
|||
01-04-2010, 09:42
(Esta mensagem foi modificada pela última vez a: 01-04-2010 09:44 por progster.)
Mensagem: #3
|
|||
|
|||
RE: SQL
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. Progster |
|||
01-04-2010, 09:43
(Esta mensagem foi modificada pela última vez a: 01-04-2010 09:45 por aucrun.)
Mensagem: #4
|
|||
|
|||
RE: SQL
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. |
|||
01-04-2010, 09:45
(Esta mensagem foi modificada pela última vez a: 01-04-2010 10:03 por progster.)
Mensagem: #5
|
|||
|
|||
RE: SQL
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. Progster |
|||
01-04-2010, 10:09
Mensagem: #6
|
|||
|
|||
RE: SQL
"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? |
|||
01-04-2010, 10:17
(Esta mensagem foi modificada pela última vez a: 01-04-2010 10:25 por progster.)
Mensagem: #7
|
|||
|
|||
RE: SQL
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". Progster |
|||
01-04-2010, 10:30
Mensagem: #8
|
|||
|
|||
RE: SQL
e se fizeres primeiro o count e depois o distinct?
|
|||
01-04-2010, 10:32
(Esta mensagem foi modificada pela última vez a: 01-04-2010 10:32 por progster.)
Mensagem: #9
|
|||
|
|||
RE: SQL [Resolvido]
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. Progster |
|||
01-04-2010, 10:55
Mensagem: #10
|
|||
|
|||
RE: SQL
Só um pequeno detalhe.. Não dês nomes às Tabelas e aos Campos com espaços e/ou caracteres especiais "ç,õ,ã", etc.
|
|||
« Mais Antigo | Mais Recente »
|
Utilizadores a ver este tópico: 1 Visitante(s)