SQL Server’da No Column Name Was Specified For Column Hatası

Herkese merhaba,

Bu yazıda sizlere SQL Server’da no column name was specified for column hatası hatasından bahsedeceğim.

Bu hata kısa ve öz olarak subquery kullanımlarında başa gelen bir hatadır. Subquery yani iç sorgu içerisinde bir hesaplama yapılmış fakat bu hesaplama yapılmış alana alias verilmemesi sonucu ortaya çıkar. Hatalı örneği Northwind veritabanını kullanarak inceleyelim.

SELECT  tbl1.CategoryID,tbl2.ProductID
FROM    

( SELECT    SUM(UnitsInStock) AS Stok ,
                    CategoryID ,
                    ProductID
          FROM      dbo.Products
          GROUP BY  CategoryID ,
                    ProductID
        ) AS tbl1

        LEFT OUTER JOIN
		
		 ( SELECT    SUM(Quantity) ,
                                    [Order Details].ProductID
                          FROM      dbo.[Order Details]
                                    INNER JOIN dbo.Products ON Products.ProductID = [Order Details].ProductID
                          GROUP BY  [Order Details].ProductID
                        )  AS tbl2 ON tbl1.ProductID = tbl2.ProductID

Sorguyu Northwind veritabanını kullanarak çalıştırdığımız zaman hata alacağız. Sebebi Sum(Quantity) kısmına takma ad yani alias vermemekten kaynaklanmıştır. Çözümü basittir. Alias yani takma ad verilince sorgumuz başarılı şekilde çalışacaktır. Çalışan örneği aşağıda görmektesiniz.

SELECT  tbl1.CategoryID,tbl2.ProductID,tbl2.Toplam
FROM    

( SELECT    SUM(UnitsInStock) AS Stok ,
                    CategoryID ,
                    ProductID
          FROM      dbo.Products
          GROUP BY  CategoryID ,
                    ProductID
        ) AS tbl1

        LEFT OUTER JOIN
		
		 ( SELECT    SUM(Quantity) AS Toplam ,
                                    [Order Details].ProductID
                          FROM      dbo.[Order Details]
                                    INNER JOIN dbo.Products ON Products.ProductID = [Order Details].ProductID
                          GROUP BY  [Order Details].ProductID
                        )  AS tbl2 ON tbl1.ProductID = tbl2.ProductID

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

2.132 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!