<?php $sql_c = mysql_query("SELECT * FROM clubes"); while($c = mysql_fetch_array($sql_c)){ $sql_cc = mysql_query("SELECT id, id_clube, SUM(vitoria) as vitorias, SUM(empate) as empates, SUM(derrota) as derrotas, SUM(golspro) as golspro, SUM(golscontra) as golscontra FROM classificacao WHERE id_clube = '".$c[id]."'"); $jogos = mysql_num_rows(mysql_query("SELECT * FROM classificacao WHERE id_clube = '".$c[id]."'")); $cc = mysql_fetch_array($sql_cc); $pontos = $cc[vitorias]*3; $pontos_final = $pontos+$cc[empates]; $vitorias = $cc[vitorias]; $empates = $cc[empates]; $derrotas = $cc[derrotas]; $gp = $cc[golspro]; $gc = $cc[golscontra]; $sg = $cc[golspro]-$cc[golscontra]; ?>
Select Em 2 Tabelas
Started By TiagoMaker, 22/07/2013, 17:42
3 replies to this topic
#1
Posted 22/07/2013, 17:42
Dae galera, na consulta abaixo estou trazendo do banco os clubes cadastrados e as partidas de cada um com seus dados, até aí consegui fazer dessa forma, mas pra ficar realmente bom, teria que ordenar pelo time com mais pontos e depois pelo número de vitórias, empates e derrotas... Só que a consulta que poderia dar esse retorno é feita no while da consulta principal. Vocês teriam alguma dica pra simplificar e poder fazer essa ordenação?
#2
Posted 24/07/2013, 10:53
por que você não usa "SELECT * FROM clubes Order By vitorias "?
Edição feita por: zazaaa, 24/07/2013, 10:54.
#3
Posted 26/07/2013, 14:40
Use inner join
select id,vitoria from clubes inner join classificacao on (id=id_clube) order by SUM(vitoria)
select id,vitoria from clubes inner join classificacao on (id=id_clube) order by SUM(vitoria)
#4
Posted 31/07/2013, 09:46
Yo.
Dá sim pra otimizar tudo em uma consulta só.
Dica 1: utilize aliases pra distinguir as tabelas e garantir unicidade no índice do array que você criará;
Dica 2: utilize sprintf() pra criar a $sql. Melhora MUITO a legibilidade do código.
Acredito que o código abaixo resolve:
Espero que resolva. o/
Dá sim pra otimizar tudo em uma consulta só.
Dica 1: utilize aliases pra distinguir as tabelas e garantir unicidade no índice do array que você criará;
Dica 2: utilize sprintf() pra criar a $sql. Melhora MUITO a legibilidade do código.
Acredito que o código abaixo resolve:
<?php $sql = sprintf("select C.*, A.[color=#008800][size=2]id, A.id_clube, SUM(A.vitoria) as vitorias, SUM(A.empate) as empates, SUM(A.derrota) as derrotas, SUM(A.golspro) as golspro, SUM(A.golscontra) as golscontra, COUNT(A.jogos) as jogos FROM classificacao A WHERE C.id_clube = A.id_clube[/size][/color]"); // Nesse caso, sprintf() foi inútil porque não usamos variáveis dentro da sql ?>
Espero que resolva. o/
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)