Order By por campo quot;virtualquot;
Ola pessoal tenho o seguinte select
Select Tra.*, (select Reg.Nome from CADREGIAO Reg where Reg.Codigo = Tra.Regiao) as NRegiao from CadTrans Tra Where Tra.Codigo <> 0´
A onde o NRegiao é um campo ´virtual´ com o nome da regiao, campo este vindo da tabela cadregiao vinculado ao campo regiao da tabela cadtrans.
Tem como por em ordem deste campo NRegiao, já tentei
order by Tra.NRegiao order by Reg.NRegiao order by NRegiao e não funcionou.
Uso DbExpress com Firebird
Select Tra.*, (select Reg.Nome from CADREGIAO Reg where Reg.Codigo = Tra.Regiao) as NRegiao from CadTrans Tra Where Tra.Codigo <> 0´
A onde o NRegiao é um campo ´virtual´ com o nome da regiao, campo este vindo da tabela cadregiao vinculado ao campo regiao da tabela cadtrans.
Tem como por em ordem deste campo NRegiao, já tentei
order by Tra.NRegiao order by Reg.NRegiao order by NRegiao e não funcionou.
Uso DbExpress com Firebird
Helderjr
Curtidas 0
Respostas
Fernando
15/12/2005
coloque order by e a coluna que esta ocampo virtual
tipo
SELECT NOME,ENDERECO, SETOR FROM CLIENTE
ORDER BY 1 PARA NOME 2 PARA ENDERECO 3 PARA SETOR OU QUALQUER Q VC QUEIRA
SELECT NOME,ENDERECO, SETOR FROM CLIENTE
ORDER BY 1
tipo
SELECT NOME,ENDERECO, SETOR FROM CLIENTE
ORDER BY 1 PARA NOME 2 PARA ENDERECO 3 PARA SETOR OU QUALQUER Q VC QUEIRA
SELECT NOME,ENDERECO, SETOR FROM CLIENTE
ORDER BY 1
GOSTEI 0
Marcio.theis
15/12/2005
Como o colega [b:98748fba1a]Fernando[/b:98748fba1a] mesmo falou, vc pode referenciar no order by, para vc poderia ficar assim:
Select (select Reg.Nome from CADREGIAO Reg where Reg.Codigo = Tra.Regiao) as NRegiao, Tra.* from CadTrans Tra Where Tra.Codigo <> 0 order by 1
GOSTEI 0
Helderjr
15/12/2005
Valeu pessoal, funcionou do jeito q queria.
GOSTEI 0
Jairroberto
15/12/2005
Olá, pessoal!
Na minha opinião o suposto ganho de performance alegado por alguns desenvolvedores no uso de sub-selects para campos ´lookup´ não justifica a sua utilização no lugar do ´JOIN´. Uso ´JOIN´ sem qualquer problema de performance e considero que sua utilização deixa as cláusulas SQL muito mais ´limpas´ e legíveis. Neste exemplo, a alternativa com ´JOIN´ seria mais ou menos assim:
Um abraço,
Jair
Na minha opinião o suposto ganho de performance alegado por alguns desenvolvedores no uso de sub-selects para campos ´lookup´ não justifica a sua utilização no lugar do ´JOIN´. Uso ´JOIN´ sem qualquer problema de performance e considero que sua utilização deixa as cláusulas SQL muito mais ´limpas´ e legíveis. Neste exemplo, a alternativa com ´JOIN´ seria mais ou menos assim:
SELECT Tra.* , Reg.Nome AS NRegiao FROM CadTrans Tra LEFT JOIN CADREGIAO Reg ON (Reg.Codigo = Tra.Regiao) WHERE Tra.Codigo <> 0 ORDER BY Reg.Nome
Um abraço,
Jair
GOSTEI 0
Fx|hand
15/12/2005
q coisa naum.... firebird num prepara a tabela antis de fazer o order by....
provavelmente pra ganhar mais performance ele jah monta a tabela utilizando o order by como referencia... por isso ele precisa de um ´codigo´ ou do ´nome´ da tabela, naum um nome ´virtual´...
provavelmente pra ganhar mais performance ele jah monta a tabela utilizando o order by como referencia... por isso ele precisa de um ´codigo´ ou do ´nome´ da tabela, naum um nome ´virtual´...
GOSTEI 0