Jump to content


Photo

Select Em 2 Tabelas


  • Faça o login para participar
3 replies to this topic

#1 TiagoMaker

TiagoMaker

    Novato no fórum

  • Usuários
  • 21 posts
  • Sexo:Não informado

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?

<?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];		
?>


#2 zazaaa

zazaaa

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino
  • Localidade:Oliveira

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 abc2

abc2

    Cuidado com o Narcisismo

  • Usuários
  • 546 posts
  • Sexo:Não informado
  • Localidade:Blumenau/SC

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)

#4 Guilherme Vieira

Guilherme Vieira

    Normal

  • Usuários
  • 113 posts
  • Sexo:Masculino
  • Localidade:Fortaleza, Ceará
  • Interesses:Desenvolvimento Web baseado nos padrões do W3C, HTML5, CSS3, PHP, JavaScript, jQuery, AJAX, SQL, MySQL.

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:
<?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/
Guilherme Vieira
g.

PS: Te ajudei? Me dá ponto! ^^




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq