Jump to content
marcelocardoso

Agrupar DATAS em noticias

Recommended Posts

Pessoal!

Pesquisei bastante no forum e na internet, porém não consegui realizar o que preciso.
Vejam se conseguem me dar uma luz para resolver.

1) preciso ao exibir no RECORDSET as noticias, mas não repetindo as DATAS;
2) preciso ao exibir agrupar as noticias sem repetição, mas mostrando todas as que pertecem a DATA acima;
2a) tipo: 14:08:1980 - exibir noticia 1, exibir noticia 2, exibir noticia 3 (que no caso, aí teria dentro do banco 3 datas para o dia 14:08:1980, mas somente mostrar 1 vez a data e as 3 noticias.
3) depois sucessivamente as demais, que daí faço com o WHILE.

Tentei usar distinct, mas também não achei o modo certo.
Alguma luz com exemplo, agradeço.

Obrigado.

Share this post


Link to post
Share on other sites

Mas como quer ver tal consulta na coluna da data seria 1 registro para 3 registros de noticias? não vai rolar...

 

o que pode fazer é tratar na aplicação para mostrar somente datas diferentes

 

ou eu não entendi o que quis dizer...

Share this post


Link to post
Share on other sites

Não vou fazer o código todo, mas vou dar uma luz:

1º - Retorna o recodset ordenado pela data;

2º - Cria uma variável com uma data "estourada", ou seja, uma data que você sabe que nunca irá se repetir, por exemplo 01/01/1900

3º - Faz um loop +/- assim (desculpa se tiver muitos erros de sintaxe, faz tempo que não mexo com ASP classico, mas dá para entender)

<%
dim dataAtual = '1900-01-01'
while not dtRecord.EOF()
begin
	reader = dtRecords.Read();
	if(reader["dataDaNoticia"] <> dataAtual)
	begin
		if(dataAtual <> '1900-01-01')
		begin
			%>
			<!--Fecha alguma estrutura que você possa ter aberto, por exemplo uma div, seilá, vai do que você precisa-->
			%>
		end
		%>
		<!--Cria alguma estrutura que você queira, por exemplo uma div, seilá, vai do que você precisa-->
		<%= dataAtual %>
		%>
	end
	%>
	<!--Coloca os dados da noticia-->
	%>
end
if(dataAtual <> '1900-01-01')
begin
	%>
	<!--Fecha alguma estrutura que você possa ter aberto, por exemplo uma div, seilá, vai do que você precisa-->
	%>
end

 

 

 

 

Share this post


Link to post
Share on other sites

Tipo preciso assim:

14:08:217
13:00hs - noticia 1

13:00hs - noticia 2

13:00hs - noticia 3

 


12:08:217
13:00hs - noticia 1

 

Digamos que em 14 08 ele tem 3 noticias, ele me mostra dentro da data 3 noticia,  e no dia 13 08, ele mostra apenas uma, pois só foi postada uma neste dia....

 

Share this post


Link to post
Share on other sites

estou tentando, primeiro com SELECT distinct PEGAR todas as DATAS, não deixando passar as DATAS repetidas, depois dentro de um while, fazer mais um SELECT com WHERE da data do DISTINCT e assim buscar todos os registros que preciso, na respectiva DATA...

vou ver...
em breve retorno.

Share this post


Link to post
Share on other sites
1 hora atrás, marcelocardoso disse:

Tipo preciso assim:

14:08:217
13:00hs - noticia 1

13:00hs - noticia 2

13:00hs - noticia 3

 


12:08:217
13:00hs - noticia 1

 

Digamos que em 14 08 ele tem 3 noticias, ele me mostra dentro da data 3 noticia,  e no dia 13 08, ele mostra apenas uma, pois só foi postada uma neste dia....

 

 

 

Então, se você não conseguiu fazer pelo DISTINCT, faz ela fazer uma consulta depois que você vê as datas...

 

Ex


 

SET RS = Server.CreateObject("ADODB.Recordset") 
        RS.open "SELECT * FROM NOTICIA WHERE ... seu codigo da data" 'Nessa consulta tu pega data


Do
If Not Rs.EOF Then

    SET GGS = Server.CreateObject("ADODB.Recordset")
    GGS.open "SELECT * FROM NOTICIA WHERE .... seu codigo da data" ' Nessa você manda ela imprimir as datas puxando a data da consulta anterior

	GGS.Close()
  	SET GGS = Nothing

RS.movenext
END IF
Loop While not RS.eof


RS.Close()
SET RS = Nothing

Fiz isso em uma consulta que preciso imprimir os pedidos da data tal e listar todos eles (já que eu uso banco de dados access e infelizmente não consegui usar select distinct nele :sweat_smile:), a desvantagem que se você não fechar as consultas depois sobrecarrega o banco pra caramba.

 

 

 

Share this post


Link to post
Share on other sites

Não, no exemplo que eu fiz ele está esperando que venha tudo da notícia, os dados e a data.

Dentro do while existe o if que verifica se a data mudou, com isso ele imprime a data somente quando mudar a data, a data só precisa estar ordenada para que o mesmo dia esteja tudo "juntinho" hahaha

Share this post


Link to post
Share on other sites
4 minutos atrás, Pita disse:

Não, no exemplo que eu fiz ele está esperando que venha tudo da notícia, os dados e a data.

Dentro do while existe o if que verifica se a data mudou, com isso ele imprime a data somente quando mudar a data, a data só precisa estar ordenada para que o mesmo dia esteja tudo "juntinho" hahaha

 

Acho que entendi, seria um tipo ORDER BY pela data?

Share this post


Link to post
Share on other sites

Isso, aí o código deve ir comparando a data, quando mudar a data [if(reader["dataDaNoticia"] <> dataAtual)] ele entra no if e deve imprimir a data, caso não, ele não faz nada e só vai imprimindo os dados da notícia mesmo

Share this post


Link to post
Share on other sites

tentei fazer assim, sem sucesso também...
 

            <%
               SET strRS = Server.CreateObject("ADODB.Recordset") 
                   strRS.Open "SELECT DISTINCT vmares_data FROM vm_noticias", conexao, 3, 3
                   
                IF strRS.EOF THEN
                      response.write "Não existe registro para exibir"
                ELSE
               
               
                   DO WHILE NOT strRS.EOF

                      response.write "<b>" & strRS("vmares_data") & "</b><br>"

                        SET strFinal = Server.CreateObject("ADODB.Recordset")
                            strFinal.Open "SELECT * FROM vm_noticias WHERE vmares_data = '"& strRS("vmares_data") &"'", conexao, 3, 3

                            DO WHILE NOT strFinal.EOF

                                     response.write strFinal("vmares_hora") & " - | - " & strFinal("vmares_titulo")

                                strFinal.MoveNext
                                         Loop

                   strRS.MoveNext
                         Loop
               
                END IF
            %>

nem assim, monta os dados no segundo DO WHILE, que no caso, eu PEGARIA com DISTINCT as datas num primeiro momento, em segundo, pelo WHERE do segundo SELECT buscava todas as noticias da data específica, do primeiro laço, mas não exibe...

oq posso estar errando..?

Share this post


Link to post
Share on other sites

Cara, faz +/- assim e desculpa pelos erros de sintaxe

 

            <%
               SET strRS = Server.CreateObject("ADODB.Recordset") 
                   strRS.Open "SELECT DISTINCT * FROM vm_noticias", conexao, 3, 3
                   
                IF strRS.EOF THEN
                      response.write "Não existe registro para exibir"
                ELSE
                
                	dim dataAtual = '1900-01-01'
                    
                    DO WHILE NOT strRS.EOF
                    
                    	IF dataAtual <> strRS("vmares_data")
	                      response.write "<b>" & strRS("vmares_data") & "</b><br>"
                          dataAtual = strRS("vmares_data")
                        ENDIF
                        
                        response.write strRS("vmares_hora") & " - | - " & strRS("vmares_titulo") & "<br>"

                   		strRS.MoveNext
                    LOOP
               
                END IF
            %>

 

Share this post


Link to post
Share on other sites

colegas, que me ajudaram...
consegui realizar assim:

CODE:

    <!-- CODE | noticias -->
    <section id="noticias" class="secao_altura100">
        <div class="secao_conteudo">
            <%
            IF Request.QueryString("noticia") = "" THEN
            %>
                <div class="row slideanim">
                    <div class="col-md-12 text-center" style="padding-bottom: 40px;">
                        <h1 class="extragrande"><b>Notícias Verdes Mares</b></h1>
                        <h1>Atualizações e informativos do meio contábil!</h1>
                    </div>
                </div>
                <%

                SET strRS = Server.CreateObject("ADODB.Recordset") 
                    strRS.Open "SELECT DISTINCT * FROM vm_noticias", conexao, 3, 3
                 IF strRS.EOF THEN
                %>
                <div class="row">
                    <div class="col-md-12" style="font-size: 25px;">AVISO!</div>
                    <div class="col-md-12">
                        <div class="col-md-12" style="padding-bottom: 5px;">
                            <h6>Não existem noticias cadastradas no momento.</h6>
                        </div>
                    </div>
                </div>
            <%
            ELSE
               
                dataAtual = "1900-01-01"
                
                    DO WHILE NOT strRS.EOF

                        IF NOT dataAtual = strRS("vmares_data") THEN
                        %>
                        <div class="row" style="padding-bottom: 5px;">
                            <div id="noticia_data" class="text-center"><%= strRS("vmares_data") %></div>
                        </div>  
                        <%
                               dataAtual = strRS("vmares_data")
                        END IF
                        %>   
                        <div class="row">
                            <div class="col-md-12 text-muted" style="font-size: 11px; border-bottom: 2px solid rgba(193, 193, 193, 0.3);">Adicionada às: <%=FormataHora(strRS("vmares_hora"))%></div>
                                <div class="col-md-12" style="padding-top: 20px;">
                                    <p style="font-size: 20px;"><%=strRS("vmares_titulo")%></p>
                                </div>
                                <div class="col-md-12 text-muted" style="text-align: justify; padding-bottom: 12px;">
                                    <%= LEFT(strRS("vmares_descricao"),400)%><% IF LEN(strRS("vmares_descricao")) > 400 THEN Response.Write " ..." END IF %>
                                </div>
                            <a href="index.asp?noticia=exibe&idnot=<%=strRS("id")%>" id="noticia_link" class="col-md-12 pull-right">+ detalhes</a>
                        </div>
                    <%   
                    strRS.MoveNext
                          loop
                 END IF
            END IF
            %>
            <!-- CODE | noticias -->            
                        
                        
                        
                        
                        
                        
                        
                        
                        
            <!-- CODE | noticias paginação de dados -->
            <nav aria-label="Page navigation">
                <ul class="pagination" id="pagination"></ul>
            </nav>
                        
            <div id="pagination_pag">Page 1</div>
                        
            <script type="text/javascript">
                $('#pagination').twbsPagination({
                    totalPages: 35,
                    visiblePages: 2,
                    onPageClick: function (event, page) {
                        $("#pagination_pag").text('Page ' + page);
                    }
                });
            </script>        
            <!-- CODE | noticias paginação de dados -->

Só a paginação de dados abaixo agora, sabem como posso incrementar o TWBS com ASP e BANCO DE DADOS?
procurei na net, não encontrei nada em asp, alguém te dicas?
agradeço.

Obrigado até aqui.
 

Share this post


Link to post
Share on other sites

Complementando, para outro caso....
consegui utililzar assim:

 

<%
'cria uma data ficticia, a qual nunca poderá repetir
data = "1900-01-01"
 
'faz um loop
DO WHILE NOT bootPAG.EOF
   
   Response.Write "<div class=""col-xl-12 col-lg-12 col-md-12 col-md-12 col-xs-12"">"
		
   		'se não for igual, imprime... e vai fazendo o laço até o fim...
        IF NOT data = bootPAG("data") THEN
           Response.Write "<div class=""box-noticias-data-min mb-2"">"& FormataDataBrasileiro(bootPAG("data")) &"</div>"
           data = bootPAG("data")
        END IF

   Response.Write "<div class=""box-noticias-titulo-min""><a href=""?idnot="& bootPAG("id") &"#topo"">"& TrataAcentos(bootPAG("titulo")) &"</a></div>"
   Response.Write "</div>"

bootPAG.MoveNext
        Loop
%>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By RAFAEL HENRIQUE DE SOUZA
      Boa noite pessoal. 

      Estou com um problema e não consegui sair do lugar, tenho uma tabela de documentos (id, doc, path, ext, id_cli) e outra tabela de controle contendo o Id_documento, tipo_doc, data_criacao.
      Preciso informar se o documento listado ja foi substituído.
      A regra é a seguinte: Para o documento de mesmo cliente e mesmo tipo ele compara as datas alimentando a coluna de status para o mais recente e substituído par os demais.
      Segue o código para ajuda.

      create table `tb_documento` (
          `ID_DOCUMENTO` int (11),
          `DOCUMENTO` varchar (60),
          `PATH` varchar (60),
          `EXTENCAO` varchar (15),
          `ID_CLIENTE` int (11)
      ); 
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('1','TESTE1','C:\\DOCUMENTOS','PDF','1');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('2','TESTE DOC','C:\\DOCUMENTOS','XLS','1');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('3','ASLJDBASIHD','C:\\DOCUMENTOS','XLS','1');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('4','EXTREME','C:\\DOCUMENTOS','PDF','1');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('5','TESTE NOVO','C:\\DOCUMENTOS','DOC','2');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('6','WIN','C:\\DOCUMENTOS','DOC','2');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('7','XTREME','C:\\DOCUMENTOS','PDF','2');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('8','SAMSUNG','C:\\DOCUMENTOS','XLS','2');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('9','CPD','C:\\DOCUMENTOS','DOC','3');
      insert into `tb_documento` (`ID_DOCUMENTO`, `DOCUMENTO`, `PATH`, `EXTENCAO`, `ID_CLIENTE`) values('10','QQWAS','C:\\DOCUMENTOS','PDF','4');
      -------------------------------------------------------------------------------------
      create table `tb_tipo_documento` (
          `ID_TIPO` int (11),
          `ID_DOCUMENTO` int (11),
          `DATA_CRIACAO` datetime 
      ); 
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('1','1','2019-06-23 18:18:15');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('3','2','2019-06-24 18:19:52');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('2','3','2019-06-19 18:20:22');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('4','9','2019-06-11 18:31:21');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('4','10','2019-06-07 18:31:44');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('5','5','2019-06-26 18:32:15');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('1','4','2019-06-03 18:32:21');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('1','6','2019-06-01 18:36:17');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('3','7','2019-06-14 18:36:35');
      insert into `tb_tipo_documento` (`ID_TIPO`, `ID_DOCUMENTO`, `DATA_CRIACAO`) values('1','8','2019-06-20 18:36:59');
      ------------------------------------------------------------------------

      Modelo de resultado esperado:
      SELECT 
          TD.*,
          TTP.ID_TIPO,
          TTP.DATA_CRIACAO,
          '' AS 'STATUS'
      FROM 
          TB_DOCUMENTO TD
      LEFT JOIN 
          TB_TIPO_DOCUMENTO TTP ON TTP.ID_DOCUMENTO = TD.ID_DOCUMENTO;
      ----------------------------------------------------------------------
      Pessoal muito obrigado, qualquer ajuda é bem vinda!
       
    • By brunoogm
      Pessoal tenho o seguinte select no mysql
       
      SELECT SUM(ValorTotal) as Total_Mes, YEAR(DataPedido) as Ano,
                                                      CASE extract(MONTH from DataPedido)
                                                      WHEN 1 THEN 'Janeiro'
                                                      WHEN 2 THEN 'Fevereiro'
                                                      WHEN 3 THEN 'Março'
                                                      WHEN 4 THEN 'Abril'
                                                      WHEN 5 THEN 'Maio'
                                                      WHEN 6 THEN 'Junho'
                                                      WHEN 7 THEN 'Julho'
                                                      WHEN 8 THEN 'Agosto'
                                                      WHEN 9 THEN 'Setembro'
                                                      WHEN 10 THEN 'Outubro'
                                                      WHEN 11 THEN 'Novembro'
                                                      WHEN 12 THEN 'Dezembro'
                                                  END AS mes
                                                  from comanda Where Year(DataPedido) = year(curdate()) and CodigoSituacao = 2 OR Year(DataPedido) = (year(now())-1) and CodigoSituacao = 2
                                                  group by mes, YEAR(DataPedido)
                                                  limit 0,12
       
      E ele me retorna a seguinte situação : 
       
      Total_Mes      Ano         mes
      555.00            2018       Agosto
      310.00            2019       Agosto
      150.00            2019       Fevereiro
      777.00            2018       Janeiro
      100.00            2019       Janeiro
      70.00             2019         Maio
       
      E no caso eu gostaria de omitir os registros que NÃO se repetem, ou seja, retirar da consulta os resultados onde o mês só apareça uma vez (maio e fevereiro)
      Preciso que o resultado seja o seguinte :
       
      Total_Mes      Ano         mes
      555.00            2018       Agosto
      310.00            2019       Agosto
      777.00            2018       Janeiro
      100.00            2019       Janeiro
       
      Alguém tem uma  ideia de como fazer isso ?
    • By Danado_
      Galera como separo por grupos e pulo linha?
      por exemplo: (anexo)

      tenho isso até o momento: 
       
      $lista = mysqli_query($con, "SELECT * FROM lista_convidados WHERE cliente = '$cliente' and lado = 'Noiva' order by responsavel asc"); while($dados = mysqli_fetch_assoc($lista)){ $html .= '<tr>'; $html .= '<td>'.$dados["responsavel"].'</td>'; $html .= '<td>'.$dados["convidado"].'</td>'; $html .= '<td>'.$dados["tipo"].'</td>'; $html .= '<td>'.$dados["tel_convidado"].'</td>'; $html .= '</tr>'; }
       
      Tem que ficarr assim: (com essa quebra de linha)

    • By reginaldo123
      quero fazer uma consulta que retorna as ultimas mensagens por data e agrupa pelo id_an

      $query="SELECT id_mensagem ,id_an,id_usuario,mensagem,data,id_p FROM mensagem WHERE  id_usuario='{$id_usuario}' ORDER BY data desc
       GROUP by id_an";
      mas esta dando erro a consulta sql
    • By alekaspary
      Bom dia Amigos.
      Preciso fazer uma consulta na tabela baterias que possui as colunas (id, voltagem, reservatorio_id, data) em que me retorne a ultima voltagem gravada no banco de cada reservatório.
       
      OBS:
      1- Usando o ORDER BY juntamento com o GROUP BY, a consulta retorna a voltagem mais antiga gravada no banco;
      2 - LIMIT não pode ser usado, já que serão vários reservatórios a serem consultados;
      3 - Já tentei utilizar o MAX(data), a consulta me retorna a data mais alta, porém com a voltagem mais antiga;
       
      EM anexo imagem com valores fictícios na tabela
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.