Order By por campo quot;virtualquot;
15/12/2005
0
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
Posts
15/12/2005
Fernando
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
15/12/2005
Marcio.theis
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
15/12/2005
Jairroberto
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
21/12/2005
Fx|hand
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´...
Clique aqui para fazer login e interagir na Comunidade :)