Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

WarLiKe

Variável de select para filtro Where

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.