drhouse 1 Denunciar post Postado Dezembro 16, 2009 Olá amigos tudo bem, sequinte estou com uma duvida gostaria de saber se e possivel e se alquem te a solução, problema e tenho duas tabelas com os sequintes campos EX: Tabela 1 ---------------- ini | cidade ---------------- 1 | 1 ---------------- 2 | 1 ---------------- 3 | 2 ---------------- 4 | 3 ---------------- 5 | 3 ---------------- 6 | 2 ---------------- EX: Tabela 2 ---------------- ini | tb_cat ---------------- 1 | a ---------------- 2 | b ---------------- 3 | c ---------------- 4 | d ---------------- 5 | e ---------------- 6 | f ---------------- Nos exemplo acima tenho 2 tabelas uma de cidade e outra de categoria estou tentando pegar os resultados repetidos de cidade como em GROUP BY agrupar eles e ter um resultado unico para poder separar as categoria por ini em tb_cat veja o exemplo do resultado abaixo que seria mostrado. em na tabela cidade teriamos o resultado de 1, 2 e 3 encontrado. apos encontrado ele pega os resultado na tabela categoria pela cidade encontrada. a, b e c. tenho o codigo abaixo desenvolvido poderia estar analisando e identificando onde estou errando por não obter o resultado desejado como no exemplo acima. Codigo... <?php $cidade = $_POST['cidade']; $sql = "SELECT cidade FROM anuncio WHERE cidade = '$cidade' GROUP BY cidade"; $qr = mysql_query($sql) or die(mysql_error()); $qr2 = mysql_num_rows($qr); $cidade = $qr2['cidade']; $sql = "SELECT * FROM tb_cat WHERE ini = '$cidade' ORDER BY nome ASC"; $qr = mysql_query($sql) or die(mysql_error()); if(mysql_num_rows($qr) == 0){ echo '<option value="0">'.htmlentities('Não há categorias').'</option>'; }else{ while($ln = mysql_fetch_assoc($qr)){ echo '<option value="'.$ln['subcat'].'">'.$ln['nome'].'</option>'; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Dezembro 17, 2009 Poste o exemplo do resultado q você deseja. Compartilhar este post Link para o post Compartilhar em outros sites
drhouse 1 Denunciar post Postado Dezembro 17, 2009 O exemplo seria assim 1 - Busco na tabela 1 por "MG" percorro toda há tabela e verifico qual categorias estão disponivel para "MG", O resultado seria: "MG: 1, 1, 2, 2" e com o GROUP BY "Pesquisei que com ele e possivel agrupar resultados" agrupo os resultados repetidos, com os resultados agrupado o valor final ficaria como "MG: 1, 2", com o resultado final agrupado agora busco em tabela 2 em ini para comparar com o valor da categoria encontrado na tabela 1 em categoria valores "1, 2". EX: Tabela 1 ------------------------ ini_|_estado_|_categoria 1___|_MG_____|_1 2___|_MG_____|_1 3___|_MG_____|_2 4___|_SP_____|_3 5___|_RJ_____|_3 6___|_MG_____|_2 7___|_MG_____|_1 ------------------------ 2 - Com os valore agrupados para o estado buscado "MG: 1, 2" busco na tabela 2 em ini para ser carregado em echo '<option value="'.$ln['subcat'].'">'.$ln['nome'].'</option>'; os valores iguais que no caso o resultado será em tb_cat "a, b": <option value="1"> a </option> <option value="2"> b </option> este e o resultado esperado. EX: Tabela 2 ---------------- ini_|_tb_cat 1___|_a 2___|_b 3___|_c 4___|_d 5___|_e 6___|_f ---------------- este e o exemplo o codigo que usei esta acima no topico. /* Comentario Busco pelo cadastro do usuario qual estados cadastrados estão disponivel nas categorias, tem muita categoria mais so quero exibir as disponivel para o estado buscado em vez de todas que estão vazia não mostra resultado invalido para o usuario e somente as que tem categorias em tabela 2. */ Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 17, 2009 Se for apenas pra não repetir resultados, utilize: SELECT DISTINCT campo FROM tabela Compartilhar este post Link para o post Compartilhar em outros sites
drhouse 1 Denunciar post Postado Dezembro 17, 2009 Como eu obteria o resultado com [vode]SELECT DISTINCT campo FROM tabela[/code] no meu codigo. <?php $cidade = $_POST['cidade']; $sql = "SELECT cidade FROM anuncio WHERE cidade = '$cidade' GROUP BY cidade"; $qr = mysql_query($sql) or die(mysql_error()); $qr2 = mysql_num_rows($qr); $cidade = $qr2['cidade']; $sql = "SELECT * FROM tb_cat WHERE ini = '$cidade' ORDER BY nome ASC"; $qr = mysql_query($sql) or die(mysql_error()); if(mysql_num_rows($qr) == 0){ echo '<option value="0">'.htmlentities('Não há categorias').'</option>'; }else{ while($ln = mysql_fetch_assoc($qr)){ echo '<option value="'.$ln['subcat'].'">'.$ln['nome'].'</option>'; } } ?> pois o reultado não esta sendo: <option value="1"> a </option> <option value="2"> b </option> adaptando quando busca na sequencia informada acima nas 2 tabelas Compartilhar este post Link para o post Compartilhar em outros sites
h4v3st 1 Denunciar post Postado Dezembro 17, 2009 drhouse, o que o Alaerte quis dizer é para você utilizar a propriedade DISTINCT na sua consulta (select). Essa propriedade elimina linhas repetidas, confira aqui: http://dev.mysql.com/doc/refman/5.0/en/distinct-optimization.html No seu código: $sql = "SELECT DISTINCT cidade FROM anuncio WHERE cidade = '$cidade' GROUP BY cidade"; Compartilhar este post Link para o post Compartilhar em outros sites
drhouse 1 Denunciar post Postado Dezembro 17, 2009 Sim entendi veja o que desenvolvi mais o resultado esta sendo 0 com o exemplo sequido de banco da dados acima teria que aparecer 1 e 2 e na categoria gerar os campos de select <option value="1"> a </option> <option value="2"> b </option> <?php $cidade = $_POST['cidade']; $sql = "SELECT DISTINCT categoria FROM anuncio WHERE cidade = '$cidade' GROUP BY cidade"; $qr = mysql_query($sql) or die(mysql_error()); if(mysql_num_rows($qr) == 0){ echo '<option value="0">'.htmlentities('Não há categorias').'</option>'; }else{ while($ln = mysql_fetch_assoc($qr)){ $categoria = $ln['categoria']; $sql2 = "SELECT * FROM tb_cat WHERE ini = '$categoria' ORDER BY nome ASC"; $qr2 = mysql_query($sql2) or die(mysql_error()); while($ln2 = mysql_fetch_assoc($qr2)){ echo '<option value="'.$ln['subcat'].'">'.$ln['nome'].'</option>'; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
drhouse 1 Denunciar post Postado Dezembro 17, 2009 Efetuei outra alteracao e me retorno apenas 1 resultado e seria 2 de tabela cidade 1 e 2 encontrado em categoria deveria ser a e b em select so esta retornando a. <? $cidade = $_POST['cidade']; $sql = "SELECT DISTINCT categoria FROM anuncio WHERE cidade = '$cidade' GROUP BY cidade"; $qr = mysql_query($sql) or die(mysql_error()); if(mysql_num_rows($qr) == 0){ echo '<option value="0">'.htmlentities('Não há categorias').'</option>'; }else{ while($ln = mysql_fetch_assoc($qr)){ $categoria = $ln['categoria']; $sql2 = "SELECT * FROM tb_cat WHERE ini = '$categoria' ORDER BY cat ASC"; $qr2 = mysql_query($sql2) or die(mysql_error()); $ln2 = mysql_fetch_assoc($qr2); echo '<option value="'.$ln2['ini'].'">'.$ln2['cat'].'</option>'; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites