Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Povo, tenho uma tabela no meu bd, aonde são colocados dados de alguns favoritos de uma série de livros, portanto o usuário pode favoritar 10 livros no site e depois pode ir até uma página aonde vão esta estes registro.
Mas eu só preciso de 10 registro dos usuários, como eu posso fazer para que o sistema registre apenas os 10 últimos registros favoritados pelos usuários, quero fazer isso, pois só irei listar 10 favoritos por usuários e não queria que ficasse registros que não seriam exibidos.
A questão é... eu tenho 10 registros... quando for colocar um novo o bd elimina o mais antigo e põe esse novo registro... e assim vai seguindo uma ordem que quando um novo for registrado o mais antigo registro seja eliminado.
Acho que isso pode ser feito diretamente pelo BD, mas não faço idéia de como fazer.
Quem puder me ajudar, valew!
Att.: Caio.
Motta, obrigado pela ajuda, mais não entendi o artigo, parece ser algo simples, mais não consegui entender a lógica, tu ou alguém poderia me explicar simplificadamente como seria o funcionamento daquelas instruções?
É Claro, se não for pedir demais.
Obrigado.
O LIMIT , limita o resultado.
SELECT *
FROM USUARIOS
LIMIT 10
A questão que você tem parece ser um pouco mais complexa, publica a SQL que tem e talvez alguém possa ajudar.
Opa, em relação ao LIMIT eu já conhecia, na verdade é uma query simples que eu tenho, utilizando select from apenas e listando todos os resultados atualmente.
A questão é na hora do insert, eu queria saber se nesse momento tem como fazer a substituição, ou seja... colocar um novo registro e apagar um antigo.
Porém to achando que terei que fazer isso via code mesmo.
Mas agradeço e fico no aguardo caso alguém tenha alguma solução via mysql sem uso de funções do code.
A questão é na hora do insert, eu queria saber se nesse momento tem como fazer a substituição, ou seja... colocar um novo registro e apagar um antigo.
Talvez via trigger isto possa ser feito.
eu faria como o motta disse, faz uma trigger que antes de inserir valide a quantidade de registros para aquele usuario, caso tenha mais que 10 apague os antigos,
o que você pode fazer tbm é tratar na aplicação, seria a mesma lógica da trigger.
seria algo tipo assim:
DELETE FROM posts WHERE id NOT IN(SELECT id FROM posts WHERE user=user_id ORDER BY id DESC LIMIT 9) AND user=user_id;
http://dev.mysql.com/doc/refman/5.0/en/limit-optimization.html