Forum Pplware
SQL BD [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 BD [Resolvido] (/showthread.php?tid=5555)



SQL BD [Resolvido] - progster - 01-04-2010 11:52

Boas.

Surgiu-me outra situação relativamente á mesma BD, que não estou a conseguir resolver, é o seguinte:

Tenho uma lista de campos do tipo SIM/NÃO, que preciso cujo output seja númerico, a questão é como é que coloco estes critérios no seguinte código?, ou seja, precioso de saber quantas pessoas retornam com o seguinte output, mais os campos do tipo SIM/NÃO

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] & "*"));

Desde já agradeço qualquer ajuda.

Cumprimentos.


RE: SQL BD - aucrun - 01-04-2010 15:13

Aí tens de fazer o GROUP BY.

SELECT COUNT([Registo de Clientes].Nome) AS [*Número de pessoas*], [Registo de Clientes].CAMPO_SIMNAO
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].CAMPO_SIMNAO

Assim agrupas o teu resultado pelo campo SIMNAO, indicando o total de registos encontrados para cada uma.
Penso que seja isto ... certo?


RE: SQL BD - progster - 05-04-2010 09:02

Bom dia.

Antes de mais peço desculpa por só agora estar a responder. Meteu-se a Pascoa pelo meio e aproveitei para repor energias.

Vou experimentar e já digo alguma coisa.
Houve progressos, ou seja, com este código:

SELECT Count([Registo de Clientes].Nome) AS [*Número de pessoas*], [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] & "*"))
GROUP BY [Registo de Clientes].[1º Emprego], [Registo de Clientes].[Novo Emprego], [Registo de Clientes].Outros;

o output foi o número de pessoas que correspondem ás condições que estou a pedir (Idade, Habilitações literárias, Sexo), mas relativamente aos campos do tipo sim/não não me aparecem quantos estão a sim.
SELECT Count([Registo de Clientes].Nome) AS [*Número de pessoas*], Count([Registo de Clientes].[1º Emprego]) AS [ContarDe1º Emprego], Count([Registo de Clientes].[Novo Emprego]) AS [ContarDeNovo Emprego], Count([Registo de Clientes].Outros) AS ContarDeOutros
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] & "*"));

Com este código, o output que me retorna são dois registos. Mas para cada um destes registos também me aparece para os campos do tipo sim/não 2,2,2, e oi que derevia retornar era 1,2,1

Não sei se me expliquei bem, qualquer coisa digam que eu volta a explicar.


RE: SQL BD - progster - 05-04-2010 11:04

SELECT Count([Registo de Clientes].Nome) AS [*Número de pessoas*], Sum([Registo de Clientes].[1º Emprego]) AS [SomaDe1º Emprego], Sum([Registo de Clientes].[Novo Emprego]) AS [SomaDeNovo Emprego], Sum([Registo de Clientes].Outros) AS SomaDeOutros, Sum([Registo de Clientes].RSI) AS SomaDeRSI, Sum([Registo de Clientes].[Subsidio de Desemprego]) AS [SomaDeSubsidio de Desemprego], Sum([Registo de Clientes].[Carta de Condução]) AS [SomaDeCarta de Condução]
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] & "*"));

Com este código já me aparece aquilo que quero, ou seja, para os campos do tipo sim/não já me aparecem numericamente quais são os que têm o sinal de visto (campos do tipo sim), mas agora aparecem-me valores negativos.

Alguém me pode dizer como é que passo esses valores para positivos?

Agradeço qualquer ajuda que me possam dar.

Cumprimentos.

A Plataforma que estou a utilizar é o Access 2003.


RE: SQL BD - progster - 05-04-2010 14:50

Já consegui resolver a situação.

Cumprimentos.