WarLiKe 0 Denunciar post Postado Junho 2, 2010 Boa tarde pessoal, Estou com uma questão de otimização aqui que já me fez perder horas em frente ao manual do mysql Atualmente eu tenho uma consulta onde eu retorno uma subquery como um dos campos e essa mesma subquery é usada no where para filtrar os dados. Só que assim pra cada registro de banco o mysql vai ter de fazer 2 subquerys, 1 pra mostrar e outro pra filtrar Exemplo: select nome, (select 2010 - 1988) as idade from pessoas where (select 2010 - 1988) > 17 Queria que ficasse tipo assim: select nome, (select 2010 - 1988) as idade from pessoas where idade > 17 Tem como? Compartilhar este post Link para o post Compartilhar em outros sites
walterwac 0 Denunciar post Postado Junho 2, 2010 Boa tarde pessoal, Estou com uma questão de otimização aqui que já me fez perder horas em frente ao manual do mysql Atualmente eu tenho uma consulta onde eu retorno uma subquery como um dos campos e essa mesma subquery é usada no where para filtrar os dados. Só que assim pra cada registro de banco o mysql vai ter de fazer 2 subquerys, 1 pra mostrar e outro pra filtrar Exemplo: select nome, (select 2010 - 1988) as idade from pessoas where (select 2010 - 1988) > 17 Queria que ficasse tipo assim: select nome, (select 2010 - 1988) as idade from pessoas where idade > 17 Tem como? Procure ler sintaxe sql! Compartilhar este post Link para o post Compartilhar em outros sites
WarLiKe 0 Denunciar post Postado Junho 7, 2010 Amigo, com todo respeito . . . eu entendo muito bem de sintaxe SQL e o exemplo que dei para o meu problema é uma coisa bem básica somente para entendimento da minha necessidade. Como eu já mencionei, eu não tenho problemas com a formulação da query, quero apenas otimiza-la para que não precise repetir a mesma subquery no select e no where. Se houver como fazer isso eu agradeceria muito alguma dica, de preferencia até de um link do manual. Se leu todo o meu post vai ver que eu já pesquisei horas sobre o assunto, principalmente sobre "sintaxe". Já vi sobre variáveis "variavel:= (subquery)" e muito mais . . .portanto se tiver algo que realmente me ajude ficarei muito agradecido. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Junho 17, 2010 Se a subquery é coluna e condição do where não parece ter muito jeito. mas ... ... (select 2010 - 1988) as idade ... Não sei muito bem síntaxe de MySql mas isto funciona ? Idade não deveria ser uma FUNCTION ? Compartilhar este post Link para o post Compartilhar em outros sites
WarLiKe 0 Denunciar post Postado Junho 22, 2010 Não, isso não é possível Motta, Como eu disse é apenas um exemplo bem basicão pra saber o que eu quero! Mas beleza . . . vamos pra um exemplo mais prático: LOJA_PEDIDO_STATUS {id, pedido, status} LOJA_STATUS {id, status} SELECT (select status from loja_status where id = loja_pedidos_status.status) as nome FROM loja_pedidos_status WHERE (select status from loja_status where id = loja_pedidos_status.status) like 'C%' Se observarem tem 2 subquerys pra poder chegar onde eu quero. Queria poder fazer assim: SELECT (select status from loja_status where id = loja_pedidos_status.status) as nome FROM loja_pedidos_status WHERE nome like 'C%' Antes que surja um comentário de que estou fazendo de forma errada e que tem jeito mais simples eu quero deixar claro que é só um exemplo e que no caso acima funcionaria assim também: SELECT loja_status.status FROM loja_pedidos_status, loja_status WHERE loja_pedidos_status.status = loja_status.id and loja_status.status like 'C%' Entre outras maneiras . . . E então . . é possível fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites