Banco de Dados
2012
1
Consultas envolvendo junção
1.1 Consulta 1
Seleciona todos os jogos de uma rodada de apostas para apresentação ao usuário para que ele possa fazer suas apostas. Os dados recuperados de cada jogo são: Id do jogo, Data, Hora, Estadio,Nome do time1, Bandeira do time 1, Nome do time 2, Bandeira do time 2. Apresentamos a consulta abaixo em que o identificador da rodada será uma variável do programa, representada aqui por x:
SELECT j.id_jogo, j.data, j.hora, ce.nome_estadio, t1.nome, t1.bandeira, t2.bandeira FROM Jogo j, Time t1, Time t2, Cidade_Estadio ce, Rodada_Apostas ra
WHERE j.id_Time1 = t1.id_time and j.id_Time2 = t2.id_time and j.id_estadio = ce.id_estadio and j.id_rodada = ra.id_rodada and ra.id_rodada = x;
t2.nome,
1.2 Consulta 2
Consulta para gerar o relatório de premiação ( ranking ) final. Seleciona as posições, os nomes do apostadores, as descrições dos prêmios ganhos na posição e as categorias dos prêmios, ordenados pela posição e, na mesma posição, pela nome do apostador.
SELECT cla.posicao, a.nome, p.descricao, cat.nome
FROM Classificacao cla, Apostador a, Premio p, Categoria cat
WHERE a.posicao = cla.posicao and cla.id_premio = p.id_premio and p.id_categoria = cat.id_categoria
ORDER BY cla.posicao, a.nome;
2
Consultas envolvendo operações de conjunto
2.1 Consulta 1
Para cada apostador, mostrar o nome e o e-mail do apostador e a quantidade de apostas em que o apostador acertou o número de gols da equipe vencedora:
SELECT u.nome, u.email, count(*)
FROM Apostador u,
(
SELECT a.email, a.id_jogo
FROM Aposta a, Jogo j
WHERE a.id_jogo = j.id_jogo and a.gol_time1 = j.gol_time1 and j.gol_tim1 > j.gol_tim2
UNION
SELECT a.email, a.id_jogo
FROM Aposta a, Jogo j
WHERE a.id_jogo = j.id_jogo and a.gol_time2 = j.gol_time2 and j.gol_time2 > j.gol_time1
) ap
WHERE u.email = ap.email;
2.2 Consulta 2
Para cada apostador, selecionar seu nome e e-mail e o número de apostas em que ele