theteo 0 Denunciar post Postado Março 11, 2014 Pessoal, estou fazendo a minha primeira view no phpmyadmin, nunca havia utilizado isso antes. A pergunta é, tenho 4 tabelas da onde quero retornar dados. tbl_turmas, tbl_unidades, tbl_graus, tbl_series A relação está assim: tbl_turmas ( id_turma, id_unidade, id_serie, turma ) tbl_unidades ( id_unidade, nome)tbl_graus ( id_grau, grau ) tbl_series ( id_serie, id_grau, serie ) Bem, eu quero fazer uma view, via phpmyadmin, que depois no código eu possa recuperar esses valores sem ter que toda hora fazer algo do tipo: SELECT t.turma,u.nome,g.grau,s.serie FROM tbl_unidades u, tbl_graus g, tbl_series s WHERE t.id_unidade = u.id_unidade and g.id_serie = s.id_serie and t.id_serie = s.id_serie É pra isso mesmo que servem as VIEWS certo ? Eu tentei colocar esse codigo ai dentro da view no phpmyadmin e deu erro. acho que tem que usar JOIN , sei lá. Eu não tenho muita experiencia com JOINS, mas se alguem puder me ajudar a CRIAR essa view eu agradeço. Atenção , a viwe será feita diretamente no phpmyadmin. Obrigado galera. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 12, 2014 Que tabela é o alias "t" !? Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Março 12, 2014 Opá, tudo bem Motta. Então, t é tbl_turmas. Desculpe o erro. O código certo seria esse: SELECT t.turma,u.nome,g.grau,s.serie FROM tbl_turmas t, tbl_unidades u, tbl_graus g, tbl_series s WHERE t.id_unidade = u.id_unidade and g.id_grau = s.id_grau and t.id_serie = s.id_serie Isso irá retorna algo do tipo: M2014001 - Taguatinga - 1 - 6 Ou seja, Turma M2014001 da unidade de taguatinga é da sexta serie do primeiro grau. Voltando ao assunto VIEW, esse código acima seria o mais indicado ? o mais performático ? Muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 12, 2014 a síntaxe da view é create or replace view <nome da view> as select ... view é apenas um object que encapsula um select , tem a mesma performance do select. vantagens : reutilização de objetos query , simplicidade de alguns selects,pode-se criar "tabelas"que agregação desvantagens : "mascaram" o acesso , mal feitas podem carregear o BD Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Março 12, 2014 então motta, eu consegui construir a View, tranquilo. minha dúvida é, nessa SITUAÇÃO DESCRITA ACIMA, se essa query é a melhor maneira, mais performática, pra carregar essa view ? ou vc acha melhor fazer o select com JOIN ? Se sim, como ficaria a query ? Muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 12, 2014 Depende de Existem índices ? Tamanho das tabelas ? Estatísticas de BD atualizadas. Fez o plano de execução das query ? Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Março 12, 2014 tbl_turmas ( id_turma ( PK ) , id_unidade, id_serie, turma ) tbl_unidades ( id_unidade ( PK ) , nome) tbl_graus ( id_grau ( PK ) , grau ) tbl_series ( id_serie ( PK ) , id_grau, serie ) é isso q tenho por enquanto. SELECT t.turma,u.nome,g.grau,s.serie FROM tbl_turmas t, tbl_unidades u, tbl_graus g, tbl_series s WHERE t.id_unidade = u.id_unidade and g.id_grau = s.id_grau and t.id_serie = s.id_serie Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 12, 2014 Teste a view. Compartilhar este post Link para o post Compartilhar em outros sites
theteo 0 Denunciar post Postado Março 14, 2014 Motta, a query funcionou, minha dúvida seria se esse tipo de select é o mais performático para essa VIEW. Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 14, 2014 https://dev.mysql.com/doc/refman/5.0/en/using-explain.html Tuning não é simples, mas tente ver se o EXPLAIN te ajuda. Compartilhar este post Link para o post Compartilhar em outros sites