zombie 0 Denunciar post Postado Abril 18, 2014 Galera é o seguinte to tentando ordenar os dados na minha consulta mas não está funcionando, pelo que me parece ele esta ordenando em grupos, alguma sugestão?agradeço desde ja´att $sql1 = mysql_query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tabela1' AND table_schema = 'bd1' AND COLUMN_NAME LIKE 'teste_%'"); while ($d1 = mysql_fetch_array($sql1)) { $d_res = trim($d1["COLUMN_NAME"]); $res = mysql_query("SELECT * FROM tabela1 WHERE $d_res != '' ORDER BY nome ASC "); while ($d2 = mysql_fetch_array($res)) { echo" ".$d2['nome']." "; } } Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Xavier 189 Denunciar post Postado Abril 18, 2014 Poderia explicar melhor? Diga o problema e também o que você deseja fazer na query. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 18, 2014 Pq está lendo a tabela de metadados de colunas ? Talvez falte um ORDER BY na consulta dos metaddos, ORDER BY 1 Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Abril 18, 2014 Galera é o seguinte to tentando ordenar os dados na minha consulta mas não está funcionando, pelo que me parece ele esta ordenando em grupos, alguma sugestão? agradeço desde ja´ att $sql1 = mysql_query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tabela1' AND table_schema = 'bd1' AND COLUMN_NAME LIKE 'teste_%'"); while ($d1 = mysql_fetch_array($sql1)) { $d_res = trim($d1["COLUMN_NAME"]); $res = mysql_query("SELECT * FROM tabela1 WHERE $d_res != '' ORDER BY nome ASC "); while ($d2 = mysql_fetch_array($res)) { echo" ".$d2['nome']." "; } } bom explicando o que preciso fazer, na "tabela1" sempre vai entrar novas colunas e para não ficar sempre atualizando o select eu fiz dessa forma acima, sql1 pego os nomes da coluna da tabela1, e no "res" eu pego os dados que preciso que no caso são os nomes, ele faz tudo certinho, porem quando eu mostro o resultado ele nao ordena, eu coloquei ai no codigo o ORDER BY nome ASC para ordenar mas nao funciona, ele parece que ordena por blocos, nao sei explicar, só sei que nao funciona rs, Motta tentei colocar também e não deu certo, alguma outra sugestão? PS: tentei explicar da melhor forma, qualquer coisa pode perguntar que tento explicar melhor, desculpa qlq coisa, abs Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 18, 2014 Mostre a saída dos dados. Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Abril 18, 2014 Gabriel Tania Ana Andressa Alexandre Bruno .... .... .... Ana Paula Breno etc sai dessa forma Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 19, 2014 Esta em WHILE para cada coluna haverá uma saída. Uma solução poderia montar um só sql com as diversas colunas obtidas da tabela de metadados. SELECT * FROM TABELA WHERE COLUNA1 != ' ' OR COLUNA2 != ' ' ... Mas é bom lembrar que não é comum ter de ser criar novas colunas em tabela, você pode estar com algum problema em sua modelagem de dados. Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Abril 19, 2014 o problema de montar somente um sql é que são muitas colunas, e da mais ou menos umas 4 linhas pra ter uma ideia, eu já fazia dessa forma, mas como algumas vezes vai precisar inserir colunas, vai que eu esqueça por isso pensei em fazer dessa forma porque dai sempre que entrar algum dado lá ele já fico meio que automático. fora montar em um só sql tem alguma outra ideia? pensei em salvar os resultados em uma array e ordenar eles e depois mostrar na tela, mas nao sei se da pra ser feito dessa forma. nao teria como agrupar todo o resultado pra ordenar? vlww Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 19, 2014 Qual o problema de um sql extenso !? Seria isto ou executar N Sqls , um para cada coluna. Não sei se este argumento de novas colunas vale pois uma nova coluna requer sempre alguma manutenção pois é um novo tipo de dado a ser tratado. Ou, como vc falou ordenar o array de saída. Boa sorte. Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Abril 19, 2014 é que cada vez que alguem inserir uma nova coluna, pode acontecer que eu nao veja para poder alterar o sql, por isso queria algo meio que automatico... agora sobre a array só tenho a ideia nao sei se daria certo. to sem ideias pra ordenar o resultado qual a forma correta de gravar os dados de saida em array para poder tentar rodenar com o sort() ???[/size] abs[/size] Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 19, 2014 Ja que vc precisa fazer o sql desta forma lendo todas as colunss da tabela, eu faria como disse nao mais a chama de um sql para cada coluna e sim "engordaria" o sql para testar todas as colunas da tabela, ao final do primeiro while ai sim executaria a segunda sql. Seria apenas uma execucao e um ORDER BY. Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Abril 19, 2014 não entendi muito bem a forma de ser feita, vou tentar aqui pra ver se consigo entender o que vc disse. não consegui entender o que fazer, pode me dar uma ajuda? abs Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 19, 2014 Estou nu tablet ruim de editar ... No primeiro WHILE é executado um SELECT para cada coluna localizada Mude para Cada linha do WHILE "engorda" a string que monta o SELECT para cada coluna da tabela Coluna1 != ' ' or coluna2 != ' ' or ... Na saída deste WHILE este select montado é executado ums só vez. Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Abril 22, 2014 mas daí se um dia eu inserir alguma coluna vou ter que alterar o codigo novamente, como faria pra ficar meio que automatico? Galera não consegui resolver o problema ainda, alguem pode me dar uma ajuda ai, to perdido aqui. vlwww Galera, desculpa postar novamente, mas estou sem ideias para resolver essa questão, alguem pode me dar uma ajuda, tentei fazer o que o amigo Motta disse acima mas nao consegui. vlwww Compartilhar este post Link para o post Compartilhar em outros sites
Diego Arent 19 Denunciar post Postado Abril 22, 2014 Estou nu tablet ruim de editar ... No primeiro WHILE é executado um SELECT para cada coluna localizada Mude para Cada linha do WHILE "engorda" a string que monta o SELECT para cada coluna da tabela Coluna1 != ' ' or coluna2 != ' ' or ... Na saída deste WHILE este select montado é executado ums só vez. Do jeito que o Motta falou... Separa os dois whiles. No primeiro, concatena as colunas: $c++; if($c > 1) { $d_res .= ', '; } $d_res .= trim($d1["COLUMN_NAME"]); Retornará: coluna1 != '', coluna2 != '', coluna3 != '..... OBS.: Fiz um contador pra saber se é preciso colocar a vírgula antes do campo ou não. No segundo, faz a busca: SELECT * FROM tabela1 WHERE '.$d_res.' ORDER BY nome Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Abril 22, 2014 hum entendi, vou tentar. vlwww Compartilhar este post Link para o post Compartilhar em outros sites