Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) SELECT em 3 Tabelas


rodrigotxt

Pergunta

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.

--
-- 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

2 respostass a esta questão

Posts Recomendados

  • 0

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 id

Abs. Progr'amador

Editado por Progr'amador
Link para o comentário
Compartilhar em outros sites

  • 0

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 Select

e JOIN também, faz muita falta não saber usar isso.

Obrigado, me ajudou demais... valeu mesmo! :D

Editado por rodrigotxt
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...