LusoRobótica - Robótica em Português
Discussão Geral => Off-topic => Tópico iniciado por: amando96 em 19 de Junho de 2011, 15:57
-
Boas tenho uma tabela com duas colunas, uma de ID, e outra com vários URLs guardados, cada URL tem um ID associado para poder ser chamado através de um número.
Ora, isto é para qualquer um que quiser meter um URL na tabela, por vezes metem URLs que nada têm a ver, ou escrevem coisas parvas, no inicio conseguia editá-los, mas agora há imensos, e preciso de uma coisa mais rápida, o que eu quero é apagar um URL, mas de forma que o seu numero atribuido não deixe de apontar para um URL, exemplo:
_____________
|1|google.com |
|2|youtube.com|
|3|hi5.com |
|4|LOLOLOLO |
|5|facebook.com|
Quero apagar o LOLOLOLO, mas em vez de ficar assim:
_____________
|1|google.com |
|2|youtube.com|
|3|hi5.com |
|5|facebook.com|
Que fique assim:
_____________
|1|google.com |
|2|youtube.com|
|3|hi5.com |
|4|facebook.com|
Talvez ficasse mais simples fazer filtragem do que entra, e não autorizar certas coisas.
-
Boas. Queres fazer isso porquê?
Repara, se associas um ID (neste caso a chave primária) a cada URL e depois apagas um determinado URL e queres re-editar os ID's, então o campo ID não te serve para nada.
Explica-te um pouco melhor porque neste área posso ajudar-te.
-
Sim, não é suposto andares a alterar os IDs dos URLs.
A tua tabela pode perfeitamente ficar com espaços em branco. ;)
-
Mas se ficar com espaços brancos quando for buscar um dado que não existe dá erro, a função vai buscar um URL aleatório, posso modificar para caso não existir simplesmente procura outro.
-
podes sempre adicionar uma condição a essa função: se o SQL responder com um erro, executa novamente a função até que o retorno seja válido
-
Estás a pensar completamente anti-SGBDs (Sistemas Gestores de Base de Dados!) :)
Nao sei que linguagem de programação estás a usar por trás mas podes fazer um SELECT de todos os IDs existentes ou um DISTINCT dos URLs e fazer random disso ou entao quando nao encontra procura outro, conforme disseste.
Quando se tem um campo ID que se pressupoe que seja key e eventualmente index nao é boa politica re-editar esses valores.
-
Mas se ficar com espaços brancos quando for buscar um dado que não existe dá erro, a função vai buscar um URL aleatório, posso modificar para caso não existir simplesmente procura outro.
Então mas explica lá a lógica disso :)
1º apagas o registo
2º vais à procura dele?
Podes é quando apagares o registo, apagar todas as referências para ele.
-
Não sou eu que escolho que URL que é chamado, é tudo aleatório.
-
Faz assim:
SELECT url FROM nome_da_tabela ORDER BY RAND() LIMIT 1;
O caminho pelo qual estavas a tentar ir, está tecnicamente errado.
-
Isso mesmo.
Se tudo for feito com SELECTs não há problema.
Penso que o comando que o SJD22 disse está correcto para o que tu queres. Experimenta.
-
Boas, pois é... nem cheguei a passar pelas funções todas do SQL e fiz tudo à pata, assim como foi dito acima faz exactamente como quero :)
Obrigado.