Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Patricia

mais de uma coluna relacionada a mesma tabela

Recommended Posts

gente, tenho uma tabela mais ou menos com a seguinte estrutura:TB_JOGOScd_jogo (pk)cd_time1 int (fk tb_time)cd_time2 int (fk tb_time)TB_TIMEcd_time (pk)nome_timeacontece o seguinte, eu cadastro um jogo que tem dois times concorrendo, e esses times estão em outra tabela.agora eu preciso listar os jogos, seriam duas colunas, em cada uma o nome do time que ta jogando, se eu não tivesse duas colunas relacionadas a uma mesma tabela, faria assim:SELECT TB_JOGOS * FROM TB_JOGOS INNER JOIN TB_TIME ON TB_JOGOS.cd_time1 = TB_TIME.cd_timeassim eu apresento na boa o nome do time, mas como apresentar o nome do time, sendo que são dois?eu posso selecionar os jogos e dentro de do loop fazer um select do nome do time, mas queria saber se tem como com a apenas uma instrução!!! :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Você já leu algo sobre MOdelagem Conceitual ou mesmo Modelo E-R??

 

 

Primeiro:

 

Você não pode ter uma chave primária para dois campos, por isso existe Integridade Referencial.

 

Segundo:

 

Quando você fizer um SELECT que nele constar campos da tabela que irá referenciar na cláusula FROM, não use asterisco, exemplo:

 

SELECT username, (firstname + ' ' + lastname) FROM tabela

Pesquise sobre isso. . .

 

DEUS lhe abençõe!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

ohhh amigão, eu agradeço a boa vontade, mas até eu ler um material inteiro sobre modelagem e descobrir onde eu to errando, seria mais facil quem sabe, apontar meu erro, não concorda??acho que é pra isso que serve esse fórum!!eu ja pesquisei aqui no imasters sobre esse problema em especial e não encontrei nada, mas vou recorrer ao google e seu eu descobrir eu posto, não o material, e sim a solução.Mesmo assim agradeço a tentativa!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Patricia,

 

neste caso você pode usar um alias (apelido) para a tabela @TB_TIME e criar dois inner's para ela com a tabela @TB_JOGOS, um com o campo cd_time1 e outro com o campo cd_time2

 

declare @TB_JOGOS table (cd_jogo int, cd_time1 int, cd_time2 int)declare @TB_TIME table (cd_time int, nome_time varchar(30))-- inserindo os times (note que inseri o São Carlos F.C. campeão paulista da serie B de 2005, e sexta-feira vamos detonar a ferroviaria...heheheh) insert into @TB_TIME (cd_time, nome_time) values (1, 'São Carlos F.C.')insert into @TB_TIME (cd_time, nome_time) values (2, 'Ferroviaria')insert into @TB_TIME (cd_time, nome_time) values (3, 'Botafogo')insert into @TB_TIME (cd_time, nome_time) values (4, 'XV de Piracicaba')-- inserindo os jogosinsert into @TB_JOGOS (cd_jogo, cd_time1, cd_time2) values (1, 1, 2)insert into @TB_JOGOS (cd_jogo, cd_time1, cd_time2) values (2, 3, 4)insert into @TB_JOGOS (cd_jogo, cd_time1, cd_time2) values (3, 1, 3)insert into @TB_JOGOS (cd_jogo, cd_time1, cd_time2) values (4, 2, 4)insert into @TB_JOGOS (cd_jogo, cd_time1, cd_time2) values (5, 1, 4)insert into @TB_JOGOS (cd_jogo, cd_time1, cd_time2) values (6, 2, 3)SELECT cd_jogo, tt1.nome_time, tt2.nome_time FROM @TB_JOGOS tjINNER JOIN @TB_TIME tt1 ON tj.cd_time1 = tt1.cd_time --apelidando a tabela @TB_TIME para tt1INNER JOIN @TB_TIME tt2 ON tj.cd_time2 = tt2.cd_time --apelidando a tabela @TB_TIME para tt2ORDER BY cd_jogo

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.