_rchaves_ 0 Denunciar post Postado Dezembro 26, 2009 É o seguinte, possuo um sistema que é uma espécie de livro, nele, a tabela página possui auto-relacionamento, pois uma página leva à outra, porém é possível que uma página tenha dois caminhos diferentes, por exemplo, a página 3 pode levar a duas diferentes páginas 4, é um livro interativo. Estou utilizando o MySQL e a tabela é mais ou menos assim: create table Paginas( id_pagina int primary key auto_increment not null, # Chave primária id_livro int not null, # A qual livro pertence esta página texto text not null, # Texto da página numero_pagina smallint not null default 1, # Número da página, é possível que existam por exemplo duas páginas 3, ou até 8 páginas 4 op tinyint, # Qual opção foi escolhida na página anterior (1 ou 2) para que o usuário pudesse chegar nessa página anterior int, # ID da página anterior à essa foreign key(id_livro) references Livros(id_livro) on delete cascade, foreign key(anterior) references Paginas(id_pagina) on delete cascade ); Eu preciso agora fazer uma lista dos ids das páginas por onde ele passou para chegar até aqui, por exemplo, a página de ID 1 o levou até a de ID 2, que o levou até a de ID 4, agora eu preciso saber por onde ele passou para ter conseguido chegar até aqui, sendo que eu só tenho as informações da página atual. Eu pensei em algo assim: int anterior = pagina_atual.getAnterior(); int numeroPagina = pagina_atual.getNumeroPagina(); for(int i = 0; i < numeroPagina; i++){ pagina_atual = consultarPagina("SELECT * FROM Paginas WHERE id_pagina = "+anterior); array.add(pagina_atual); anterior = pagina_atual.getAnterior(); } Mas isso executaria muitos selects, o que é um problema, principalmente num livro grande. Acredito que é possível resumir tudo isso a um único select, mas ainda não obtive sucesso, por favor, me ajudem! Compartilhar este post Link para o post Compartilhar em outros sites
_rchaves_ 0 Denunciar post Postado Dezembro 28, 2009 Bump! Por favor, me ajudem, se não deu pra entender o meu problema por favor me avisem! Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 28, 2009 Que linguagem é essa ? Java ? Se for toda página que o usuário estiver você guarda. Manja ArrayList() ? Compartilhar este post Link para o post Compartilhar em outros sites
_rchaves_ 0 Denunciar post Postado Dezembro 28, 2009 Sim sim, o problema é que não quero ter q fazer dezenas de selects no banco, gostaria de resolver isso quem sabe com um select só, ou então criar uma função no MySQL pra selecionar todos esses itens que eu quero de uma vez só, preencher a arraylist sem ter q ir fazendo um novo select de resultado em resultado. --- Edit --- Ah sim, você quis dizer pra cada página que ele avançar eu guardar, assim não teria que fazer select nenhum, mas o problema é que quando ele fecha o programa, assim que ele volta estará marcado na página que ele estava, eu gostaria de não ter q fazer outra tabela apenas para guardar por quais páginas ele passou para chegar até a atual. Compartilhar este post Link para o post Compartilhar em outros sites