1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Relações no PhpMyAdmin

Discussão em 'Web Development' iniciada por Tsunamy_boy, 3 de Abril de 2008. (Respostas: 18; Visualizações: 6843)

  1. Tsunamy_boy

    Tsunamy_boy Banido

    Como faço relações a tabelas com o PhpMyAdmin?
    Onde existe essa opção, e se é que existe...
    A versão que tenho vem com o xammp e é a versão 2.11.3 (ultima axo)
     
  2. MPalhas

    MPalhas Power Member

    só relaccionas as tabelas na altura de fazer as querys. se já sabes a sintaxe (SELECT ... FROM ... WHERE ...) fica fácil
    só tens que adicionar uma comparação no WHERE entre os campos chaves das tabelas que queres relacionar

    ex:
    Código:
    SELECT *
    FROM nomes, moradas
    WHERE nomes.cod_nome=moradas.cod_nome
    depois, acrescentas a comparações que precisares para filtrar os dados, tipo nomes.cod_nome=1


    ou então usas INNER JOIN

    ex:
    Código:
    SELECT *
    FROM nomes INNER JOIN moradas
    ON nomes.cod_nome=moradas.cod_nome
    neste caso, é como teres uma junção dessas duas tabelas numa só

    penso que se usa mais o INNER JOIN mas eu habituei-me a fazer as relações com o WHERE. são hábitos...



    depois também há o LEFT JOIN e o RIGHT JOIN.
    com o INNER JOIN ou o WHERE, só mostra os registos que aparecem nas duas tabelas (ex: so mostra o cod_nome quando ele existe na tabela nomes e na moradas. se nao houver correspondencia, esse registo nao aparece).
    com o LEFT JOIN mostra todos os registos da tabela da esquerda mesmo que não tenha correspondente na direita, e vice-versa para o RIGHT JOIN
    não sei se me fiz entender bem. qualquer duvida, avisa.
     
  3. Tsunamy_boy

    Tsunamy_boy Banido

    não quero consultas quero relações entre uma tabela e outra por chave externa, para dar um erro quando tentar eliminar um registo que já tem ID noutra tabela, é isso… tipo foreignkey… mas sem ter que fazer isto por código… e para mais eu já experimentei por código e mesmo assim posso eliminar o registo que tem relação noutra tabela.
     
    Última edição pelo moderador: 3 de Abril de 2008
  4. anjo2

    anjo2 Power Member

    Não sei se podes fazer isso, mais fácil fazer como ele disse, procuras, se o numero de resultados for maior que 0, é porque existe.
     
  5. slack_guy

    slack_guy Power Member

    Por exemplo:
    Código:
    CREATE TABLE tabPai (
       idpai INT NOT NULL,
       nome VARCHAR(255) NOT NULL,
       PRIMARY KEY (idpai)
    ) ENGINE=INNODB;
    
    CREATE TABLE tabFilho (
       idfilho INT,
       pai_id INT,
       INDEX pai_index (pai_id),
       [B]FOREIGN KEY (pai_id) REFERENCES tabPai(idpai) ON DELETE CASCADE[/B]
    ) ENGINE=INNODB;
    
    
     
  6. MPalhas

    MPalhas Power Member

    slack_guy, isso o que faz é apagar automaticamente os registos da tabFilho quando os correspondentes da tabPai são apagados.
    acho que o que ele é precisamente o contrário, não deixar que ele seja apagado quando existe um registo relacionado noutra tabela

    bom, se existe o DELETE CASCADE não me admiro se também houver alguma coisa para impedir de apagar, mas a unica maneira que eu conheço é mesmo fazer uma query para procurar o registo na outra tabela, e se nao encontrar correspondente, executa a query para apagar
     
  7. Armadillo

    Armadillo Folding Member

    tem lá tudo
     
  8. MPalhas

    MPalhas Power Member

    ok, sempre a aprender :p. não tinha visto os links com muita atenção porque estava com pressa.
     
  9. Tsunamy_boy

    Tsunamy_boy Banido

    o "DELETE CASCADE" serve para apagar em cadeia? tipo tudo o que tiver abaixo dessa tabela é apagado?
    é que se for serve perfeitamente
     
  10. theforbidden1

    theforbidden1 Banido

    o delete on cascade serve para quando a chave estrangeira deixar de existir (na tabela das chaves estrangeiras) aqueles registos serem todos apagados.

    O problema deste post começou quanto te começaram a explicar coisas para o PhpMyAdmin, quando na verdade te deviam ter educado e ensinado que o que tu querias saber é MySQL...

    Já agora há 1 fórum sobre programação ;)
     
  11. slack_guy

    slack_guy Power Member

    Pela minha parte, percebi perfeitamente o que o OP procura no phpMyAdmin. E o que ele procura não existe (ou pelo menos não existia até há 2 anos atrás quando deixei de o usar).

    Ele procura uma forma de, por meio de 'point&click' e 'drag&drop' construir as relações entre tabelas - deve ser qualquer coisa parecida com o que a MS tem para o MSSQL Server.
    Já vi aplicações Livres para isso mas não tenho links. É uma questão de procurar em www.freshmeat.net, www.sf.net e, por fim, www.google.pt .
     
  12. Tsunamy_boy

    Tsunamy_boy Banido

    a duvida não é de programação mas sim de phpmyadmin(como sabes é um site onde constróis a base de dados)
    quanto ao slack_guy sim a minha duvida é exactamente essa
    mas quanto ao "
    DELETE CASCADE" ja ajuda
     
  13. Serrot

    Serrot Power Member

    faz o download das MySQL GUI tools.

    Tem o MySql Administrator que é bom para fazer graficamente o que queres.

    Não tem 'point&click' e 'drag&drop' mas dá para utilizar
    a interface gráfica para construir esse tipo de keys, indices e relações,
    que sempre é mais agradável que o 'modo texto'.
     
  14. Tsunamy_boy

    Tsunamy_boy Banido


    onde arranjo?
     
  15. Serrot

    Serrot Power Member

  16. Tsunamy_boy

    Tsunamy_boy Banido

    ok ja ta, vou ver se é util, brigadão
     
  17. theforbidden1

    theforbidden1 Banido

    O phpMyAdmin é um cliente de SQL... como há aplicações que dá para ter no PC que fazem exactamente o mesmo... Eu como no php my admin insiro SQL á lá pate...
     
  18. Tsunamy_boy

    Tsunamy_boy Banido

    sim mas o que eu quero e usar ferramentas mas eu vou experimentar o que me sugeriram acima
     

Partilhar esta Página