SIMPLIFICAR STRING MYSQL

FBUR 22/07/2016 14:26:48
#465035
Boa tarde.
Imagine a SQL
  
SELECT codigo,nome,salario
(SELECT porcent FROM tbl_valores WHERE codigo = 1) as porcentual,
(salario * (SELECT porcent FROM tbl_valores WHERE codigo = 1)) as valor
FROM.....


Eu peguei porcent da tabela valores e chamei de [Ô]porcentual[Ô]
Daí usei este porcentual para fazer um cálculo e chamei de [Ô]valor[Ô]

Pergunto: Existe alguma forma de fazer assim como abaixo?
  
SELECT codigo,nome,salario,
(SELECT porcent FROM tbl_valores WHERE codigo = 1) as porcentual,
(salario * porcentual) as valor
FROM.....


Uso o MySQL. Quando faço assim, me retorna um erro dizendo que o campo [Ô]porcentual[Ô] não existe. Isso eu já sabia que ia ocorrer. Mas gostaria de saber se não tem como simplificar.

Essa string é só um exemplo. A minha string que estou usando no meu projeto tem várias linhas que nem cabem no monitor
Então se existir uma forma de simplificar como no exemplo, seria ótimo.

Obrigado!
JABA 22/07/2016 15:15:41
#465038
Explique melhor o que você precisa, talvez existam formas melhores de solucionar o mesmo problema. À principio, tente o seguinte:

SELECT codigo,nome,salario,
(SELECT porcent FROM tbl_valores WHERE codigo = 1) as porcentual,
(salario * porcentual[txt-color=#e80000].porcent[/txt-color]) as valor
FROM.....
FBUR 22/07/2016 15:30:27
#465042
Desta forma não dá, pois [Ô]porcentual[Ô] é um campo e não uma tabela.

O que eu preciso é simplificar a string SQL.

No exemplo, usei:


(SELECT porcent FROM tbl_valores WHERE codigo = 1) as porcentual [ô]---> é uma coluna que mostra os porcentuais

(salario * (SELECT porcent FROM tbl_valores WHERE codigo = 1)) as valor [ô]--> é uma coluna que mostra o valor do salário * porcentual (acima).

[ô]a ideia seria substituir o select de:
(salario * (SELECT porcent FROM tbl_valores WHERE codigo = 1)) as valor
[ô]por uma variável que já receberia o porcentual, para deixar a string mais curta.


O meu projeto funciona, mas a string SQL ficou muito grande porque preciso fazer coisas assim várias vezes na mesma string. Então pensei que se existisse uma forma de simplificar, seria mais fácil de visualizar e manter o código.
JABA 22/07/2016 15:38:01
#465043
E qual é o erro que deu no exemplo que te passei?
FBUR 22/07/2016 16:08:24
#465047
  
(salario * porcentual.porcent) as valor


Este seu exemplo serviria se porcentual fosse uma tabela [tabela.campo]

Veja que no meu exemplo, porcentual é uma coluna.
JABA 22/07/2016 16:24:25
#465049
[Ô]porcentual[Ô] é uma tabela em memória. Você chegou a testar o que te passei?
FBUR 22/07/2016 17:59:18
#465054
Testei sim. Pelo menos no MySQL, que é o que uso, diz que a tabela.campo não existem.

Mas é o que estou te falando, veja:

SELECT codigo,nome,salario,(SELECT porcent FROM tbl_valores WHERE codigo = 1) as porcentual,(salario * porcentual.porcent) as valor
FROM.....


Se fosse substituir, seria:


SELECT codigo,nome,salario,porcentual, valor
FROM.....


[Ô]porcentual[Ô] e [Ô]valor[Ô] são campos, não tabelas.
Tópico encerrado , respostas não são mais permitidas