Emrah AÇIKGÖZ'ün Kişisel Sahifesi.

ALIAS’ın Where ve Order by içinde kullanımı

  • 5 sene önce, Emrah tarafından yazılmıştır.
  • 0 Yorum
  • Oracle

örnekle olayı anlatmaya çalışalım.

Where içinde Alias kullanmak:

select
    name as ObjeAdi,
    YEAR(create_date) as YIL,
    create_date as OlusturmaTarihi
from
    sys.objects
where YIL = 2012

Yukarıdaki sorguyu çalıştırdığınız zaman “Invalid column name ‘YIL’.” hatası alırsınız.

Order by İçinde Kullanımı :

select
    name as ObjeAdi,
    YEAR(create_date) as YIL,
    create_date as OlusturmaTarihi
from
    sys.objects
order by YIL desc

Yukarıdaki sorguyu ise herhangi bir hata almadan çalıştırabilirsiniz. Peki bunun sebebi nedir ?

SQL Server bir sorguyu işlerken belirli bir sıraya göre işlem yapar. Bu sıra genel hatları ile şu şekildedir. FROM -> ON -> WHERE -> SELECT -> ORDER BY

Tanımladığınız YIl alias ı select içinde tanımlandığı ve WHERE kısmı SQL de SELECT’ten önce çalıştığı için, WHERE kısmı çalışırken SQL engine daha YIL adındaki aliasın ne olduğunu bilmemekte. Bu yüzden de invalid column name hatası vermekte.

 

sorunu ;

select f.* from (select
    name as ObjeAdi,
    YEAR(create_date) as YIL,
    create_date as OlusturmaTarihi
from
    sys.objects ) as f
where YIL = 2012
modunda aşabilirsiniz.

 

Bir Yorum Yazın