Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Patrique

[Resolvido] Permitir apenas 10 registros no bd

Recommended Posts

Fala ae galera beleza, tenho um banco de dados e nele insiro sempre os últimos usuários logados no site, vamos supor que ele logo hoje ás 23:00 o sistema ira inserir nesta tabela o nome e da data da última logagem...

 

So que eu preciso sempre dos 10 últimos registros, o restante não me serve... então a dúvida é... como fazer para que o sistema deixe sempre os últimos 10 registros... o restante ele exclui assim que completar 10...

 

A um tempo atrás eu tinha um script que fazia isto... porém perdi e não to achando uma solução para isso.

 

desde já agradeço,

Patrique

Compartilhar este post


Link para o post
Compartilhar em outros sites

Selecione os 10 ultimos registros,

 

Select idDaTabela From tabela Order By idDaTabela Desc Limit 10

 

coloca os id's dos registros em uma variavel do tipo

Variavel = "1,2,3,4,5,6,7,8,9,10"

 

Depois use a clausula Not In para deletar os demais registro.

 

delete From TABELA Where idDaTabela Not In('"&Variavel&"');

 

Desta forma da certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, valew ted, vou ver se faço assim mesmo.

 

Mais ta dando um erro aqui quando eu uso limit 10, estou fazendo da seguinte maneira

 

strSQL = "SELECT Id FROM Acessos ORDER BY Id DESC Limit 10"

E aparece este erro

 

Erro de sintaxe na cláusula ORDER BY.
/inc/func_ultimos_acessos.asp, line 19

Se eu tirar o "Limit 10" o resultado aparece sem erro.

 

O que pode ser?

 

Desde já agradeço,

Patrique

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que ver mesmo qual o seu db

 

-------------------

 

Editado

 

Desculpem, postei atrasado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew Mario,

 

Aqui, surgiu mais uma dúvida hehehehe como eu faço para coloca os id's dos registros em uma variavel do tipo

Variavel = "1,2,3,4,5,6,7,8,9,10" ?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode unir em um laço

 

mas nao entendi direito o que quer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo Mário, eu estou utilizando esta função para pegar os 10 ultimos registro

 

strSQL = "SELECT Top 10 * FROM Acessos ORDER BY Id DESC"
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open strSQL,Conn,3,3

Dai eu utilizo for next para jogar os resultados

 

<% For i = 1 To Rs.RecordCount %>
<%=Rs("id")%>
<%
Rs.MoveNext
Next
%>

Dae ele me tras os 10 ids, mais agora como eu consigo jogar eles em uma variavel para utilizar na sugestão que o mx loco postou que no caso seria assim

 

Variavel = "1,2,3,4,5,6,7,8,9,10"

delete From TABELA Where idDaTabela Not In('"&Variavel&"');

Desde já agradeço,

Patrique

Compartilhar este post


Link para o post
Compartilhar em outros sites

DELETE FROM TABELA WHERE idDaTabela Not In(SELECT Top 10 * FROM Acessos ORDER BY Id DESC);

Assim não resolve?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais neste caso vai deletar os últimos 10 registros, o que eu preciso é que o sistema mantenha os últimos 10 registros cadastrados no BD e delete o restante.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Fique atento ao NOT IN. Essa expressão quer dizer, idDaTabela que não esteja entre os valores dentro do parêntese.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente agora que reparei, pow show muito mais prático desta forma!

 

Valew mais uma vez ted... opss..... hargon heheheheh

 

Tópico Resolvido!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interessante, o MySql não aceita "Limit" em subquery.

 

Aff

Compartilhar este post


Link para o post
Compartilhar em outros sites

Correto mx loco, no MySQL não funcionaria dessa forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.