juni0r 0 Denunciar post Postado Setembro 17, 2004 bom dia a todos, estou com o seguinte problema:tenha uma tabela matéria que tem os campos:id, titulo, conteudo, secao, data sendo q tenho 7 tipos de seções (moda, comportamento, saude...)o que eu preciso é fazer um SELECT que pegue os últimos (ORDER BY data DESC) de cada seção!!eu já tentei GROUP BY, MAX(data), mas ele me retorna a data certa com os outros campos (titulo, conteudo, secao, id) correspondentes a outra linda..e mais, eu preciso que isso apareça numa index de maneira randômica, ou seja, tendo a ultima matéria de cada seção, eles vai ficar dispostos maneira diferente cada vez que o usuário entrar na index.. alguem pode me daruma mãozinha???valeu ae :) Compartilhar este post Link para o post Compartilhar em outros sites
FReDiNHoW 0 Denunciar post Postado Setembro 17, 2004 ja tentou:SELECT * FROM TABELA GROUP BY SECAO ORDER BY ID DESC? Compartilhar este post Link para o post Compartilhar em outros sites
juni0r 0 Denunciar post Postado Setembro 17, 2004 fiz, mas ele não está retornando os valores desejados :( Compartilhar este post Link para o post Compartilhar em outros sites
FReDiNHoW 0 Denunciar post Postado Setembro 17, 2004 SELEC * FROM TABELA WHERE SECAO='(SELECT SECAO FROM TABELA GROUP BY SECAO)' ORDER BY RAND()tenta essa com subselect se nao for nao sei oq eh :( Compartilhar este post Link para o post Compartilhar em outros sites
juni0r 0 Denunciar post Postado Setembro 17, 2004 po eu tinha tentado o subselect, mas nao tinha conseguido tb.. coloquei o comando: SELEC * FROM materia WHERE secaoMateria = '(SELECT secaoMateria FROM materia GROUP BY secaoMateria)' ORDER BY RAND( ) com esse seu comando ele deu o erro: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELEC * FROM materia WHERE secaoMateria = '(SELECT secaoMater :( Compartilhar este post Link para o post Compartilhar em outros sites
FReDiNHoW 0 Denunciar post Postado Setembro 17, 2004 nao sou espeicalista em SQLs mas, tenta sem aspas no select de dentro... na boa mano.. será que os dados tao sendo exibidos de forma certa e voce eh q nao ta sacando? pq o select com group by que te passei era pra funcionar na boa... ve ai.. Compartilhar este post Link para o post Compartilhar em outros sites
juni0r 0 Denunciar post Postado Setembro 17, 2004 tenho certeza q ta gerando o erro.. :( cara, o mysql suporta subselect mesmo?? ae a solução era mais simples..sem falar que precisopegar a ultima materia de cada secaomesmo assim vlw sua intenção fredinhow :) Compartilhar este post Link para o post Compartilhar em outros sites
FReDiNHoW 0 Denunciar post Postado Setembro 17, 2004 nao queria apelar mas n tem outro jeito hehe (eu geralmente faco isso (2 tabelas pra noticias com secoes))cria uma tabela pra secoes:tblSecoes (ID(int 11 auto_increment), descricao(varchar 250)) por exe a tbl de materiastblMaterias (ID(int 11 auto_increment), titulo(varchar 250), idsecao(int 11)) por exdaí:$q = mysql_query("SELECT ID,descricao FROM tblSecoes ORDER BY RAND() LIMIT 5");if ($v = mysql_fetch_array($q)){do{$qq = mysql_query("SELECT * FROM tblMaterias WHERE idsecao=".$v["ID"]." ORDER BY ID DESC");$vv = mysql_fetch_array($qq);print $vv["titulo"]." - ".$v["descricao"]."<br>";}while($v = mysql_fetch_array($q));}desse modo ele pega na tabela de seções randomicamente todas as que tiverem limitando 5 (secoes distintas) e mais abaixo pra cada uma ele pega o ultimo texto onde o id da secao em questao for o mesmo da materia saca?né possível que nem assim funcione :) testa aí só pra ver Compartilhar este post Link para o post Compartilhar em outros sites
juni0r 0 Denunciar post Postado Setembro 17, 2004 cara, diz ae e funcionou hehehe valeu mesmo :D http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites