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

Título: Dúvida de SQL, PHPMyAdmin
Enviado 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.




Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: SJD22 em 19 de Junho de 2011, 16:12
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.

Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: microbyte em 19 de Junho de 2011, 21:27
Sim, não é suposto andares a alterar os IDs dos URLs.

A tua tabela pode perfeitamente ficar com espaços em branco. ;)
Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: amando96 em 19 de Junho de 2011, 23:24
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.
Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: CBX em 19 de Junho de 2011, 23:35
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
Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: SJD22 em 19 de Junho de 2011, 23:52
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.
Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: microbyte em 20 de Junho de 2011, 12:31
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.
Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: amando96 em 20 de Junho de 2011, 13:07
Não sou eu que escolho que URL que é chamado, é tudo aleatório.
Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: SJD22 em 20 de Junho de 2011, 14:21
Faz assim:

SELECT url FROM nome_da_tabela ORDER BY RAND() LIMIT 1;

O caminho pelo qual estavas a tentar ir, está tecnicamente errado.
Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: microbyte em 20 de Junho de 2011, 16:28
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.
Título: Re: Dúvida de SQL, PHPMyAdmin
Enviado por: amando96 em 06 de Julho de 2011, 22:17
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.