Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS

Moderador: web

 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

25-05-2011 19:04

Salve galera, boa tarde a todos!

Estou com uma duvida se alguem puder me ajudar ficaria muito grato.

Eu tenho o seguinte SQL.
$sql2 = 'SELECT MIN(dianteiro) AS dianteiro, competidor, cidade, loja, carro, suspencao, dianteiro, traseiro FROM ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY dianteiro ASC, traseiro ASC LIMIT 10';

Ele esta respeitando o ORDER BY da coluna dianteiro mas da traseiro não esta, alguem poderia me esclarecer aonde estou errando as formas que ja tententei.

ORDER BY dianteiro, traseiro ASC; ORDER BY dianteiro ASC, traseiro;

Agradeço a ajuda!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

25-05-2011 19:11

Se são duas colunas, primeiro uma é toda organizada, depois a segunda, talvez o resultado esteja certo, mas não de acordo com o que precisa. Posta um print de como está organizado sua tabela.
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

25-05-2011 19:27

Opa valeu por ajudar!

Veja o link da imagem

http://www.previewsite.com.br/ranking.jpg

Antes eu estava somando "traseiro + dianteiro AS soma ORDER BY soma". Parecia que estava certo mas se repetir o nome do competidor ele aparece o primeiro nome cadastrado e não pelo resultado da soma.

Fico no seu aguardo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

25-05-2011 19:47

Acho que você não pode usar o ORDER BY em um campo criado com AS.

Já a ordem, qual a lógica que você usa para ordenar esses valores?
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

25-05-2011 19:56

O correto seria a soma dos valores dianteira + traseira e tira a media, essa forma seria a ideal, porem se for em Order by dos campos separados, dianteira primeiro e depois a traseira, como esta definindo somente a dianteira nesse caso, se perceber no resultado que te enviei que o terceiro colocado a traseira é muito maior que por exemplo o quarto colocado, no caso ai o quarto colocado seria o terceiro se fosse pela media.

Aguardo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

25-05-2011 20:19

Então pelo que entendi, você quer pegar os valores de duas colunas, somar, e ordenar a consulta por esse valor?

Eu fiz uma consulta de teste aqui

Somei duas colunas e defini para ela um valor, e ordenei por esse valor usando o DESC

SELECT coluna1+coluna2 AS soma FROM minhatabela ORDER BY soma DESC

Obtive a listagem com os valores maiores no topo da lista.
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

26-05-2011 08:11

Então eu ja fiz assim também como te disse, so que assim não da certo, daria se a tabela fosse uma tabela simples mas não é, essa tabela pode se repetir o nome do competidor e se for uma consulta simples assim ele não mostra o valor menor da soma, mostra o primeiro cadastrado por isso que tenho que usar o MIN para forçar a chamada do menor valor mesmo que o competidor tenha mais que um resultado.

Antes ela estava assim, da forma que vc fez:

$sql2 = 'SELECT competidor, cidade, loja, carro, suspencao, dianteiro, traseiro, dianteiro + traseiro AS soma FROM ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY soma ASC LIMIT 10';

Mas como te falei essa forma não chama o valor menor e sim o primeiro valor. Então preciso forçar ela a fazer isso:
$sql2 = 'SELECT MIN(dianteiro) AS dianteiro, competidor, cidade, loja, carro, suspencao, dianteiro, traseiro FROM ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY dianteiro ASC, traseiro ASC LIMIT 10';
So que ai ela lista o dianteiro e o traseiro fica seguindo a ordem do diaanteiro, se eu tentar pela media:

$sql2 = 'SELECT MIN(dianteiro + traseiro) AS soma, competidor, cidade, loja, carro, suspencao, dianteiro, traseiro FROM ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY soma ASC LIMIT 10';

Eu tinha quase certeza que funcionaria assim, mas tb não esta pegando o valor menor, não sei mais como fazer.

Se alguem puder ajudar nessa questão. Fico Agradecido.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

26-05-2011 10:01

Esse valor menor seria o que?
Posta ai um sql para eu testar aqui com alguns valores de sua consulta, se possível printa como deveria ser listado.
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

26-05-2011 10:25

Vou te explicar!

Essa é uma tabela de competição de carros rebaixados, a menor suspenção é o primeiro colocado, e para ter esse valor menor deve somar a dianteira com a traseira e dividir por 2, so que não pode ser somente assim:

$sql2 = 'SELECT MIN(dianteiro + traseiro) AS soma, competidor, cidade, loja, carro, suspencao, dianteiro, traseiro FROM ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY soma ASC LIMIT 10';

Porque como o nome do competidor pode se repetir na mesma tabela ele pega o primeiro cadastrado e não com a media melhor classificada, isso não da certo pq essa soma não é impressa.

Essa forma esta dando certo mas somente no dianteiro:
$sql2 = 'SELECT MIN(dianteiro) AS dianteiro, competidor, cidade, loja, carro, suspencao, dianteiro, traseiro FROM ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY dianteiro ASC, traseiro ASC LIMIT 10';
A minha pergunta é, como O ORDER BY pode funcionar corretamente em duas colunas, 1º a dianteira e depois a traseira.

Segue o link:
http://www.previewsite.com.br/ranking.jpg
0
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

26-05-2011 10:29

Então não pode ser ORDER BY dianteiro, traseiro. Erro classico, não tem como fazer isso nessa tabela, tem que ser somente pela média, somando as duas tabelas e dividindo por 2, agora como fazer isso imprimindo o melhor resultado.

Valeu pela ajuda.

Se aguem tiver uma outra idéia e puder me ajudar ficaria grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

26-05-2011 10:33

Essa questão de repetir o competidor na mesma tabela atrapalha bastante na obtenção do resultado esperado. Se conseguisse eliminar isso, acho que seria o ideal.

Quanto ao script, já tentou na própria query somar as 2 colunas e dividir por 2, e ordenar por esse valor?
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

26-05-2011 11:00

Impossivel não repetir o competidor, o mesmo competidor poderá competir em varias etapas do brasil, ai entra nessa tabela que é o resultado brasileiro.

quanto ao script ja tentei sim de duas formas.

Essa:
$sql2 = 'SELECT MIN(dianteiro + traseiro) AS soma, competidor, cidade, loja, carro, suspencao, dianteiro, traseiro FROM ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY soma ASC LIMIT 10';
e também essa:
$sql2 = 'SELECT competidor, cidade, loja, carro, suspencao, dianteiro, traseiro dianteiro + traseiro AS soma FROM ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY soma ASC LIMIT 10';
Mas tem uma forma, tenho certeza, so preciso achar qual é ou aguardar se algum pró em SQL possa me ajudar, um Moderador ai do site poderia dar uma força nessa questão.

obrigado pela ajuda amigo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

26-05-2011 11:06

Você não poderia identificar a competição na tabela? Dessa forma, seria feito a consulta somente em uma competição específica.

O que indiquei foi algo do tipo:

coluna1 + coluna2 / 2 AS total
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

26-05-2011 11:13

ja existe essa tabela, esse sistema é muito grande, gera uma tabela de resultado de cada cidade e varias outras de rankings estaduais e essa que é o brasileiro.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

26-05-2011 11:17

Ai é complicado. Tentou o que indiquei, somar 2 colunas e dividir por 2 na query, e ordenar por esse resultado?
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

26-05-2011 12:31

opa amigo, consegui ;)
$sql2 = 'SELECT MIN(dianteiro) AS dianteiro, competidor, cidade, loja, carro, suspencao, dianteiro, traseiro, traseiro + dianteiro / 100 AS soma FROM bkp_ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY soma ASC LIMIT 10';
Segue o site:

http://www.101eventos.com.br/site/ranki ... Brasileiro

Valeu pela ajuda amigo.
0
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

26-05-2011 12:32

a sua idéia de / 2 foi fundamental, não deu certo assim mas ai fiz um echo no resultado e percebi que estava acumulando um valor diferente, ai / 100 que saiu o resultado certinho.

Valeu
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

26-05-2011 12:59

Boa. ;)
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 63

Duvidas sobre o ORDER BY

26-05-2011 18:51

Meu amigo ainda não era aquela forma, estava apresentando um resultado errado, mas depois de muita luta ... hehehe consegui.

Esse é o código correto para apresentar aquela tabela;
$sql2 = 'SELECT MIN(dianteiro) AS dianteiro, MIN(traseiro) AS traseiro, competidor, cidade, loja, carro, suspencao, MIN(dianteiro) + MIN(traseiro) AS soma FROM bkp_ranking WHERE modalidade = \''.$id_mod_rebaixado.'\' AND status = 1 GROUP BY competidor ORDER BY soma ASC LIMIT 10';
Valeu? abraços.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17246
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre o ORDER BY

26-05-2011 19:43

Boa, vi que adicionou valores para o traseiro também. ;)
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado