Como fazer o Select

23/09/2013

Bom dia pessoal

Estou com um problema para resolver em SQl Server, tenho estas 3 tabelas, onde tenho 2 perguntas a serem respondidas como mostra o exemplo abaixo. O propósito é de que com as informações das tabelas pergunta e alternativa eu consiga somar e obter o resultado mostrado abaixo.

Teria como fazer isto?

As estruturas das tabelas são apenas com campos do tipo Integer e String, para facilitar. Apenas existe um relacionamento entre a tabela pergunta e alternativa, A tabela votos não conversa com ninguém.

Como seria os comandos SELECT para retornar as respostas da pergunta 01 e 02.

Alguém poderia me ajudar? Seria muito grato a todos.

Valnei


Tabela Pergunta

CodPergunta Pergunta
001 Qual a sua cor preferida?
002 Qual o seu time favorito?


Tabela Alternativa

CodAlternativa Alternativa CodPergutna
001 Preto 001
002 Azul 001
003 Roxo 001
004 Palmeiras 002
005 Corinthians 002

É uma tabela do tipo temporária que na verdade acumula somente o código da alternativa, pois ao final ele vai somar e dar o resultado de acordo com as 2 questões abaixo.

Tabela Votos
CodVoto CodAlternativa
001 001
002 002
003 001
004 003
005 001
006 001


Perguntas:

1. Total de votos por alternativa

O resultado esperado seria este: Selecionando a pergunta Qual a sua cor favorita?

Alternativa Quantidade de votos
Preto 004
Azul 001
Roxo 003

2. Total de votos por pergunta

Resultado Esperado.

Qual a sua cor favorita? teve 8 votos (veja o exemplo acima)
Qual o seu tive favorito? Teve 2 votos


Vlw

Valnei Reis

Respostas

23/09/2013

Alex Lekao

Ola Valnei, bom dia!!!

nao sei se entendi bem.

Mas testa com este codigo

select
   p.Alternativa,
   count(a.codalternativa)
from pergunta as p
inner join alternativa as a on a.codpergunta = p.codpergunta
group by p.alternativa


Espero ter ajudado.

Abraco.

Alex - Lekao
Responder Citar

23/09/2013

Valnei Reis

Obrigado Alex

Vou executar este código e retorno para dizer se esta tudo certo.

Obrigado

Valnei
Responder Citar

23/09/2013

Mariana Carvalho

Ola Valnei, bom dia!!! nao sei se entendi bem. Mas testa com este codigo
select
   p.Alternativa,
   count(a.codalternativa)
from pergunta as p
inner join alternativa as a on a.codpergunta = p.codpergunta
group by p.alternativa
Espero ter ajudado. Abraco. Alex - Lekao


sempre me perco com esses selects.
Responder Citar

25/09/2013

Rodrigo Lacerda

Mariana, mas é tão simples!!

mas pra não se perder eu recomendo sempre identar ...
Responder Citar

25/09/2013

Alex Lekao

com certeza a identacao ajuda muito...

teve inclusive um topico no forum que se falava a respeito de identacao.

eu particularmente qdo vejo alguns codigos do pessoal que nao esta identado, honestamente fico confuso e nao consigo ajudar legal ou analisar bem.

embora nao tenha tanto conhecimento assim... sou meio novato... rsrsrsr
Responder Citar

25/09/2013

Rodrigo Lacerda

Exatamente Alex,

eu particularmente não consigo entender algumas bagunças que o pessoal faz, quando comecei a programar a primeira coisa que meu professor me fez fazer foi identar tudo e sempre me dando bronca ai meio que fiquei traumatizado ! haahaha...

mas de fato, um código bem identado , organizado fica muito mais fácil resolver problemas e também evita-os.
Responder Citar

25/09/2013

Alex Lekao

com ctz...

eu nao sou proramador, nem gosto de programar...

qdo comecei a mexer com banco... senti a necessidade de fazer identacao nos codigos... e tendo fazer o maximo possivel... nunca recebi um treinamento nem orientacao especifica a respeito... rsrsr
Responder Citar

25/09/2013

Rodrigo Lacerda

heheheh show...

eu recebi na faculdade, prof gente boa demais, até hoje muito amigo meu.
Responder Citar

25/09/2013

Alex Lekao

ai eh da hora...

eu tenho um que eh da hora tbm...

estou fazendo faculdade so agora... rssrsr

o cara eh muito bom e da aula de banco de dados...

pelo que vejo o cara manja muito de muita coisa... e eh bem aprofundado e camarada simples...
Responder Citar

25/09/2013

Rodrigo Lacerda

Entendi.. show,

mas cade esse Valnei que não responde! rs
Responder Citar

25/09/2013

Valnei Reis

Grande Alex.

Ainda não tive tempo suficiente para testar o código do amigo informado anteriormente, acredito que até amanhã devo dar uma parecer sem falta.

Caso vc tenha algo a acrescentar ao código ou ao meu problema eu agradeço

Valnei
Responder Citar

25/09/2013

Alex Lekao

entao Valnei,

Eu nao fiz teste nem nada com relacao ao seu problema, apenas escrevi pensando nos dados que vc informou.

Para fazermos um teste mais efetivo teria que fazer um insert de dados na base, e eu infelizmente nao tive tempo de fazer isso tambem... rsrsr

eu aqui o tempo eh muito escasso... rsrsr

mas vamos aguardar para ver se da certo...
Responder Citar

25/09/2013

Mariana Carvalho

Mariana, mas é tão simples!! mas pra não se perder eu recomendo sempre identar ...


o problema não é isso e sim os codigos mesmo.
Responder Citar

25/09/2013

Roniere Almeida

Mariana, existe um otimo livro, o nome é Fundamentos em T-SQL.
Responder Citar

26/09/2013

Alex Lekao

[quote]Mariana, mas é tão simples!! mas pra não se perder eu recomendo sempre identar ...


o problema não é isso e sim os codigos mesmo.[/quote]

eu tambem me perco com os codigos as vezes... rsrsr
Responder Citar