juliano.ma Postado Março 25, 2008 Denunciar Share Postado Março 25, 2008 (editado) Olá amigos!já postei essa pergunta no fórum de PHP, mas acho que a solução deve estar no código do MySql.Considerem a seguinte tabela mySQL;id .... nome ...... color1 ....... color1perc ..... color2 ...... color2perc ..... color3 .... color3perc01 ... João ....... branco ........... 5% ................ verde ........ 10% ......... preto ....... 105%02 ... Pedro ..... roxo ............... 22% .............. azul .......... 15% ......... verde ....... 50%03 ... Jorge ...... cinza .............. 25% ............. branco ...... 0,9% ........ azul .......... 100%04 ... Carlos .... marrom .......... 54% ............. azul ........... 60% ......... roxo ......... 80%05 ... José ........ verde ............ 30% ............ cinza .......... 65% .........branco ..... 70%Nesse caso eu estou buscando os nomes que contem a cor verde e gostaria de obter o seguinte resultado:João - 10%Pedro - 50%José - 30%Então quando eu fizesse a busca pela cor verde o resultado me retornaria o nome e o percentual:Olhem oque eu já tentei:<?php include 'config.php'; $palavra = $_GET['palavra']; $sql3 = mysql_query("SELECT * FROM tabela WHERE color1='$palavra ' OR color2='$palavra ' OR color3='$palavra ' OR color4='$palavra ' OR color5='$palavra ' OR color6='$palavra '"); while($reg = mysql_fetch_array($sql3)) { $i = 0; ++$i; $percent = "$palavra".$i."%"; echo $reg['nome']; echo "<br>"; echo $reg["$percent"]; echo "<br>"; } ?>Mas assim não retorna o resultado esperado.Já me deram a dica de usar a função FIELD() mas dei uma lida no manul e não entendi direito.Comoeu poderia implementar isso?Grande abraço! Editado Março 26, 2008 por juliano.ma Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Março 26, 2008 Denunciar Share Postado Março 26, 2008 Oi, 'juliano.ma'!Tente assim:SELECT nome, IF(color1 = "verde", color1perc, IF(color2 = "verde", color2perc, IF(color3 = "verde", color3perc, 0))) FROM tabela;Ver Manual MySQL versão 4.1 capítulo 6 Link para o comentário Compartilhar em outros sites More sharing options...
0 juliano.ma Postado Março 26, 2008 Autor Denunciar Share Postado Março 26, 2008 (editado) De qual modo fica mais leve para a execução, do meu jeito ou o que o você sugeriu?Ambos os modos vão varrer toda a tabela. A vantagem do meu modo sobre o seu éstá na liberação da cláusula where que pode ser ulitizada em outra finalidade sem prejudicar a performance da pesquisa. Editado Março 26, 2008 por Denis Courcy Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Março 26, 2008 Denunciar Share Postado Março 26, 2008 De qual modo fica mais leve para a execução, do meu jeito ou o que o você sugeriu?Ambos os modos vão varrer toda a tabela. A vantagem do meu modo sobre o seu éstá na liberação da cláusula where que pode ser ulitizada em outra finalidade sem prejudicar a performance da pesquisa.Desculpe ter bagunçado sua resposta. pode postar novamente, por favor? Link para o comentário Compartilhar em outros sites More sharing options...
0 juliano.ma Postado Março 27, 2008 Autor Denunciar Share Postado Março 27, 2008 Não esquenta a cabeça amigo!Re-post:Bom, acabei resolvendo sozinho...pior que não tava dificil, era só pensar um pouco...ta ai pra quem quiser o exemplo:<?php include 'config.php'; $palavra = $_GET['palavra']; $sql3 = mysql_query("SELECT * FROM tabela WHERE color1='$palavra ' OR color2='$palavra ' OR color3='$palavra ' OR color4='$palavra ' OR color5='$palavra ' OR color6='$palavra '"); while($reg = mysql_fetch_array($sql3)) { echo $reg[nome] " ("; if ($reg[color1] == $palavra) {echo $reg[color1perc];} elseif ($reg[color2] == $palavra) {echo $reg[color1perc];} elseif ($reg[color3] == $palavra) {echo $reg[color3perc];} elseif ($reg[color4] == $palavra) {echo $reg[color4perc];} elseif ($reg[color5] == $palavra) {echo $reg[color5perc];} elseif ($reg[color6] == $palavra) {echo $reg[color6perc];} else {} echo "%), "; } ?>Resultado = João (10%)Pedro (50%)José (30%) Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
juliano.ma
Olá amigos!
já postei essa pergunta no fórum de PHP, mas acho que a solução deve estar no código do MySql.
Considerem a seguinte tabela mySQL;
id .... nome ...... color1 ....... color1perc ..... color2 ...... color2perc ..... color3 .... color3perc
01 ... João ....... branco ........... 5% ................ verde ........ 10% ......... preto ....... 105%
02 ... Pedro ..... roxo ............... 22% .............. azul .......... 15% ......... verde ....... 50%
03 ... Jorge ...... cinza .............. 25% ............. branco ...... 0,9% ........ azul .......... 100%
04 ... Carlos .... marrom .......... 54% ............. azul ........... 60% ......... roxo ......... 80%
05 ... José ........ verde ............ 30% ............ cinza .......... 65% .........branco ..... 70%
Nesse caso eu estou buscando os nomes que contem a cor verde e gostaria de obter o seguinte resultado:
João - 10%
Pedro - 50%
José - 30%
Então quando eu fizesse a busca pela cor verde o resultado me retornaria o nome e o percentual:
Olhem oque eu já tentei:
Mas assim não retorna o resultado esperado.
Já me deram a dica de usar a função FIELD() mas dei uma lida no manul e não entendi direito.
Comoeu poderia implementar isso?
Grande abraço!
Editado por juliano.maLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados