rodrigotxt Postado Maio 27, 2011 Denunciar Share Postado Maio 27, 2011 Oi Pessoal.Meu problema é o seguinte:Tenho um site de Esporte e estou criando banco de dados para gerar tabelas dos campeonatos.A estrutura das TABELAS:CAMPEONATO (id,nome)TIME (id, nome)JOGOS (id, idcamp, timeA, timeB)Eu estou tentando fazer um SELECT que pegue:campeonato.nome, time.nome, jogo.idJá consegui isso:SELECT jogo.id AS IDjogo, time.nome AS time1, time.nome AS time2, campeonato.nome, gpA, gpB, gcA, gcB, timeA, timeBFROM jogo, campeonato, timeWHERE campeonato.id = jogo.idcampAND (time.id = timeAOR time.id = timeB)O resultado é esse:idjogo.....|....Time1..........|....Time2..........|....Campeonato.Nome1............|....Flamengo.....|....Flamengo.....|....Brasileiro Série A1............|....Avaí............|.....Avaí............|....Brasileiro Série AEu preciso assim: idjogo.....|....Time1..........|....Time2..........|....Campeonato.Nome1............|....Flamengo.....|....Avaí.............|....Brasileiro Série A2............|....Santos.........|....Atlético.........|....Brasileiro Série AAlguém entendeu o que eu preciso?Se alguém puder me dar um Help, agradeço.Estou quebrando a cabeça aqui com isso.Não sou muito bom em SQL, eu acho que talvez sejao caso de usar algum JOIN ou algo do tipo, mas não sei como se faz.Segue o codigo SQL do banco para vocês analisarem.Obrigado.-- -- Estrutura da tabela `campeonato` -- CREATE TABLE IF NOT EXISTS `campeonato` ( `id` int(3) NOT NULL auto_increment, `nome` char(40) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `nome` (`nome`) ) TYPE=MyISAM AUTO_INCREMENT=4; -- -- Extraindo dados da tabela `campeonato` -- INSERT INTO `campeonato` (`id`, `nome`) VALUES (1, 'Brasileiro Série B'), (2, 'Brasileiro Série A'), (3, 'Divisão de Acesso'); -- -------------------------------------------------------- -- -- Estrutura da tabela `jogo` -- CREATE TABLE IF NOT EXISTS `jogo` ( `id` int(5) NOT NULL auto_increment, `idcamp` int(3) NOT NULL, `timeA` int(3) NOT NULL, `timeB` int(3) NOT NULL, `gpA` int(2) NOT NULL, `gpB` int(2) NOT NULL, `gcA` int(2) NOT NULL, `gcB` int(2) NOT NULL, `datahora` timestamp NOT NULL, `local` varchar(200) NOT NULL, `fim` set('Y','N') NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=11; -- -- Extraindo dados da tabela `jogo` -- INSERT INTO `jogo` (`id`, `idcamp`, `timeA`, `timeB`, `gpA`, `gpB`, `gcA`, `gcB`, `datahora`, `local`, `fim`) VALUES (1, 2, 1, 40, 4, 0, 0, 0, '2011-05-21 18:30:00', ' Cláudio Moacyr ', 'Y'), (3, 2, 6, 31, 1, 1, 0, 0, '2011-05-21 18:30:00', 'Arena do Jacaré', 'Y'), (5, 2, 32, 33, 1, 0, 0, 0, '2011-05-22 16:00:00', 'Benedito Teixeira', 'Y'), (6, 2, 7, 36, 1, 2, 2, 2, '2011-05-25 21:00:00', 'Olímpico', 'Y'), (7, 2, 10, 8, 0, 1, 0, 0, '2011-05-25 16:00:00', 'Couto Pereira ', 'Y'), (8, 2, 35, 34, 1, 0, 0, 0, '2011-05-22 16:00:00', 'Orlando Scarpelli ', 'Y'), (9, 2, 3, 39, 0, 2, 0, 0, '2011-05-22 18:30:00', 'São Januário', 'Y'), (10, 2, 38, 37, 2, 1, 0, 0, '2011-05-22 18:30:00', 'Arena do Jacaré', 'Y'); -- -------------------------------------------------------- -- -- Estrutura da tabela `time` -- CREATE TABLE IF NOT EXISTS `time` ( `id` int(3) NOT NULL auto_increment, `nome` char(40) NOT NULL, `img` varchar(120) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `nome` (`nome`) ) TYPE=MyISAM AUTO_INCREMENT=53; -- -- Extraindo dados da tabela `time` -- INSERT INTO `time` (`id`, `nome`, `img`) VALUES (1, 'Flamengo', NULL), (2, 'Goiás', NULL), (3, 'Fluminense', NULL), (4, 'Vasco', NULL), (5, 'Vila Nova', NULL), (6, 'Santos', NULL), (7, 'Grêmio', NULL), (8, 'Atlético-GO', NULL), (9, 'Bragantino', NULL), (10, 'Coritiba', NULL), (11, 'Salgueiro', NULL), (12, 'São Caetano', NULL), (13, 'Icasa', NULL), (14, 'Duque de caxias', NULL), (15, 'ABC', NULL), (16, 'Grêmio Barueri', NULL), (17, 'Sport', NULL), (18, 'Portuguesa', NULL), (19, 'Ponte Preta', NULL), (20, 'Guarani', NULL), (21, 'Criciúma', NULL), (22, 'Ituiutaba', NULL), (23, 'Parána', NULL), (24, 'Americana', NULL), (25, 'Vitória', NULL), (26, 'Naútico', NULL), (27, 'ASA', NULL), (28, 'Ceará-CE', NULL), (29, 'Atlético-MG', NULL), (30, 'Internacional', NULL), (31, 'Atlético-PR', NULL), (32, 'Palmeiras', NULL), (33, 'Botafogo', NULL), (34, 'Cruzeiro', NULL), (35, 'Figueirense', NULL), (36, 'Corinthians', NULL), (37, 'Bahia', NULL), (38, 'América-MG', NULL), (39, 'São Paulo', NULL), (40, 'Avaí', NULL), (41, 'Associação Goiatuba', NULL), (42, 'Goiânia', NULL), (43, 'Inhumas', NULL), (44, 'Itumbiara', NULL), (45, 'Iporá', NULL), (46, 'Anápolis', NULL), (47, 'Jataiense', NULL), (48, 'Rio Verde', NULL), (49, 'Nerópolis', NULL), (50, 'Canedense', NULL), (51, 'Mineiros', NULL), (52, 'Rioverdense', NULL); Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Maio 27, 2011 Denunciar Share Postado Maio 27, 2011 (editado) Olá,pode fazer assim:SELECT id as idjogo, (SELECT nome FROM time WHERE id=timeA) as Time1, (SELECT nome FROM time WHERE id=timeB) as Time2, (SELECT nome FROM campeonato WHERE id=idcamp) as Campeonato FROM jogo ORDER BY idAbs. Progr'amador Editado Maio 27, 2011 por Progr'amador Link para o comentário Compartilhar em outros sites More sharing options...
0 rodrigotxt Postado Maio 27, 2011 Autor Denunciar Share Postado Maio 27, 2011 (editado) Quando o cara é expert no assunto é outra coisa... :)Vou dar um jeito de criar um XML ou HTML estático pra essa consulta,pra não ficar pesquisando toda hora no banco esses Sub Selects...Tenho que aprender essas coisas mais 'avançadas' como Sub Selecte JOIN também, faz muita falta não saber usar isso.Obrigado, me ajudou demais... valeu mesmo! :D Editado Maio 27, 2011 por rodrigotxt Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rodrigotxt
Oi Pessoal.
Meu problema é o seguinte:
Tenho um site de Esporte e estou criando banco de dados para gerar tabelas dos campeonatos.
A estrutura das TABELAS:
CAMPEONATO (id,nome)
TIME (id, nome)
JOGOS (id, idcamp, timeA, timeB)
Eu estou tentando fazer um SELECT que pegue:
campeonato.nome, time.nome, jogo.id
Já consegui isso:
SELECT jogo.id AS IDjogo, time.nome AS time1, time.nome AS time2, campeonato.nome, gpA, gpB, gcA, gcB, timeA, timeB
FROM jogo, campeonato, time
WHERE campeonato.id = jogo.idcamp
AND (
time.id = timeA
OR time.id = timeB
)
O resultado é esse:
idjogo.....|....Time1..........|....Time2..........|....Campeonato.Nome
1............|....Flamengo.....|....Flamengo.....|....Brasileiro Série A
1............|....Avaí............|.....Avaí............|....Brasileiro Série A
Eu preciso assim:
idjogo.....|....Time1..........|....Time2..........|....Campeonato.Nome
1............|....Flamengo.....|....Avaí.............|....Brasileiro Série A
2............|....Santos.........|....Atlético.........|....Brasileiro Série A
Alguém entendeu o que eu preciso?
Se alguém puder me dar um Help, agradeço.
Estou quebrando a cabeça aqui com isso.
Não sou muito bom em SQL, eu acho que talvez seja
o caso de usar algum JOIN ou algo do tipo, mas não sei como se faz.
Segue o codigo SQL do banco para vocês analisarem.
Obrigado.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados