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.
