Ir para conteúdo

POWERED BY:

Arquivado

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

André D

Query de Muitos para Muitos, eu acho

Recommended Posts

Galera já faz algum tempo que não mecho com PHP e MYSQL e estou levando uma sura aqui pra conseguir fazer uma coisa relativamente simples.

 

Digamos que eu tenha um site sobre Futebol, e eu tenha as seguintes tabelas:

 

times, campeonatos e conectartimes

 

TABELA TIMES:

 

ID 1 - Corinthians

ID 2 - Palmeiras

ID 3 - Sao Paulo

ID 4 - Flamengo

ID 5 - Gremio

ID 6 - Cruzeiro

 

TABELA CAMPEONATOS:

IDcamp 1 - Brasileiroa

IDcamp 2 - Estadual

IDcamp 3 - Libertadores

 

TABELA conectartimes

id 1 - IDcamp1

id 1 - IDcamp 2

id 1 - IDcamp 3

id 2 - IDcamp 2

id 2 - IDcamp 3

 

 

Como ficaria a query em SQL para listar os campeonatos em que o Corinthains ID 1, está participando. Espero que meu conector esteja correto. Abraço e desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai que tá eu não fiz não tenho ideia de como fazer, o exemplo ai o nome ta certo é muitos para muitos, ou tenho que usar outra coisa?

 

Consegui algo, mas so mostra o nome de uma competição

 

  require_once('db_connect.php');
 $sql = "SELECT campNome FROM conectartimes WHERE id = 1";
 $resul = mysql_query($sql);
 while($row = mysql_fetch_array($resul)) {
   $teste = $row['campNome'];
 }


 $seg = "SELECT campNome FROM competicao WHERE compID =$teste";
 $resultado = mysql_query($seg);
 while($esc = mysql_fetch_array($resultado)) {
   echo $esc['campNome'];
 }


Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que seria mais ou menos isso:

 

SELECT TIMES, CAMPEONATOS

FROM (TIMES INNER JOIN conectartimes ON TIMES.ID = conectartimes.ID) INNER JOIN CAMPEONATOS ON conectartimes.conectar = CAMPEONATOS.ID

WHERE (((TIMES.Times)="Corinthians"));

 

Testei aqui no access e deu certo.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou aqui, eu to com algum bug mental eu ja fiz isso antes, não sei porque to apanhando tanto, coloquei meu DB no Pastebin, se alguem puder dar uma olhada http://pastebin.com/naaA6wGF

 

Alguem poderia me dizer ao menos o que devo procurar no Google para conseguir concluir esta tarefa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Select 
t.`campo_nome_time`,
c.`campo_nome_campeonato`
from 
`times` t
INNER JOIN 
`conectartimes` ct 
ON 
t.`campo_id` = ct.`campo_id` 
INNER JOIN 
`campeonatos` c 
ON 
ct.`campo_id_campeonato` = c.`campo_id_campeonato` 
WHERE 
t.`campo_nome_time` = 'Corinthians' --pesquisa por nome do time

 

Só alterar os nomes dos campos nas respectivas tabelas

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.