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

Dúvida MySQL

Discussão em 'Web Development' iniciada por skandal, 23 de Agosto de 2008. (Respostas: 3; Visualizações: 484)

  1. skandal

    skandal Power Member

    Tenho uma query algo complexa e preciso da ajuda da malta.

    Código:
    SELECT nome, id, horarioContacto, telemovel,telefone, 
    DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(dataNascimento, '%Y') - (DATE_FORMAT(NOW (), '00-%m-%d') < DATE_FORMAT(dataNascimento, '00-%m-%d')) AS idade
    FROM provadores  WHERE  salaProvas =1  AND ( (idade >= 30 AND idade <= 40 )  )  AND provadores.id NOT IN(1)
    
    Como podem reparar tenho um campo "custom" com a idade, calculado com base naquela função manhosa e a data de nascimento.

    O problema é que depois tente usar o mesmo campo para filtrar pela idade e não consigo.

    Tenho sempre o erro "1054 - Unknown column 'idade' in 'where clause'"

    Como posso colocar isto a funcionar... Obrigado :)
     
  2. AliFromCairo

    AliFromCairo Power Member

    Boas, podes criar uma view onde tens os dados no formato que pretendes, e em seguida fazes uma projecção sobre essa view.
     
  3. skandal

    skandal Power Member

    Criar mais uma "tabela" na BD, não estou para aí virado, posso sempre é replicar a função no sitio onde tenho o alias idade.... e como não tenho mais que 6/8 comparações talvez não fique muito pesado.....
     
  4. AliFromCairo

    AliFromCairo Power Member

    Hmm, não é uma "tabela", é uma view, são coisas bastante distintas.

    Podes de facto fazer isso que estás a dizer, mas penso que vais ficar com uma query ininteligível, ao contrário da view. Em termos de performance, não te preocupes com isso a não ser que tenhas milhões de registos nessa tabela.

    Alternativamente, podes tentar utilizar a cláusula having.
     

Partilhar esta Página