SQL [Resolvido] - Versão de Impressão +- Forum Pplware (http://forum.pplware.com) +-- Fórum: Mais Tech (/forumdisplay.php?fid=11) +--- Fórum: Programação e Web (/forumdisplay.php?fid=16) +--- Tópico: SQL [Resolvido] (/showthread.php?tid=5553) Páginas: 1 2 |
SQL [Resolvido] - progster - 01-04-2010 09:31 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. RE: SQL - aucrun - 01-04-2010 09:37 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 RE: SQL - progster - 01-04-2010 09:42 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. RE: SQL - aucrun - 01-04-2010 09:43 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. RE: SQL - progster - 01-04-2010 09:45 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. RE: SQL - ricardoantunes - 01-04-2010 10:09 "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? RE: SQL - progster - 01-04-2010 10:17 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". RE: SQL - ricardoantunes - 01-04-2010 10:30 e se fizeres primeiro o count e depois o distinct? RE: SQL [Resolvido] - progster - 01-04-2010 10:32 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. RE: SQL - ricardoantunes - 01-04-2010 10:55 Só um pequeno detalhe.. Não dês nomes às Tabelas e aos Campos com espaços e/ou caracteres especiais "ç,õ,ã", etc. |