Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Dae pessoal...
Vou começar a fazer um sistema onde o usuário pode interagir, inserindo e editando dados no DB.
Para ter controle sobre o conteúdo, cada vez que o usuário edita determinado ID, ao invés de eu realizar um UPDATE dos dados eu realizo um INSERT mantendo o ID.
Desta forma, a tabela ficará com IDs repetidos, entretanto o campo "versão" (auto-increment) mostrará qual a versão mais recente.
Ok, até ae beleza...
O problema é o seguinte: quero realizar uma listagem dos dados do DB, exibindo somente as últimas versões de cada ID.
Digamos que a tabela original esteja nesses termos:
ID | Dados | Versão
1 | xxxxx | 3
1 | yyyyy | 4
2 | xxxxx | 1
2 | yyyyy | 3
3 | xxxxx | 5
3 | yyyyy | 7
Dae eu quero exibir somente as últimas versões:
1 | yyyyy | 4
2 | yyyyy | 3
3 | yyyyy | 7
Como ficaria a cláusula SQL pra realizar tal filtro?
Se alguém puder me mostrar ou indicar o caminho de onde posso resolver isso, fico grato.
Flw. T+
Não há modo de o admin monitorar o volume de dados que serão modificados. O objetivo é apenas manter todas as modificações, como na wikipedia, para poder-se restaurar alguma informação que, por ventura, venh aa ser deletada.Quanto à "gravar o insert usando o id como referencia", não entendi Fabyo. Pode me explicar melhor?! Valeu!
cara, ai eu acho q o mais correto seria você usar um id como chave unica e usar mais um campo referenciando o id e talvez fosse nescessario mais um com a versão dele.uma tabela comiddadosid_do_artigoversaopor exemploo campo id seria unico e não se repetiria, o campo id_do_artigo iria conter o id do artigo original e a versao iria conter um numero q indicaria qual a versão (duhhh) do artigo, depois você faria um select pra exibir o campo q contem as maiores versões e usar o campo id_do_artigo pra exibir somente uma versão de cada noticia...ihhh acho q me embolei todo pra explicar, mas no geral seria isso.[]s
E ai Alex... fmz
Bom, pelo que entendi, você quer fazer um auto_increment na tabela no id e na versão mas ela só da pra usar o increment uma vez né.
Faz assim então:
>
ID | ID_ESPECIE | VERSAO
12 25 1
14 25 2
56 25 3
65 25 4
O camo ID você coloca um auto_increment normal.
E da versão você faz assim.
bota o valor ele com default de 1 (Para o primeiro registro cair com valor 1 e não vazio).
Ai você vai fazer um increment manual, algo mais ou menos assim:
>
<?
$pegaultimaversao = mysql_query("SELECT id_versao FROM tabela WHERE id = '$id' ORDER BY id_versao DESC");
list($id_versao) = mysql_fetch_row($pegaultimaversao);
$id_versao_increment = $id_versao += 1; // Gera o increment da nova versão, agora o resto é com você.
?>
Ai tem um tempinho que num pego pra programar php, deu branco em alguns comandos aqui, desculpe se algo tiver errado, mas a lógica da pra entender né..
Flw ai...
depois me fala oque deu...
Seguindo as intruções do UselessThoughts, reestruturei a tabela...Ficou neste modelo:
ID | ID_ESPECIE | VERSAO23 10 129 10 234 10 345 10 429 15 155 15 264 15 379 15 4
Agora estou precisando fazer a listagem dos dados, somente da última versão de cada espécie de árvore, ou seja, as linhas
ID | ID_ESPECIE | VERSAO45 10 479 15 4
Só que não faço a menor idéia de como realizar a clausula SQL. Alguém disposto/apto a me ajudar? Valeu!
olha o melhor jeito pra fazer isso nao é ficar repetindo dados, o que você pode fazer é gravar o insert usando o id como referencia mas nao quer dizer que esta repetindo ids, outro jeito é você deixar as pessoas inserir materias monitoradas por exemplo ela cadastra uma materia e salva num banco temp e só depois que um admin autorizar que a materia entra na tabela certa e quando ao usuario editar os proprios dados nao tem problema ele fazer isso