SQL Server administration and T-SQL development, Web Programming with ASP.NET, HTML5 and Javascript, Windows Phone 8 app development, SAP Smartforms and ABAP Programming, Windows 7, Visual Studio and MS Office software
Development resources, articles, tutorials, code samples, tools and downloads for ASP.Net, SQL Server, Reporting Services, T-SQL, Windows, AWS, SAP HANA and ABAP

COALESCE Kullanılarak UserDefinedFunction Yardımı ile Bir Kitabın Yazarlarının Okunması


Kitaplar hakkında bilgi veren bir uygulamanız var ve bir kitabın yazarlarını da bu uygulamada görüntülemek istiyorsunuz.
Bir kitabın birden fazla yazarının olması durumunda bu bilgiyi kitap ile ilgili tabloda bir kolon içinde tutmanız olanaksız hale gelecektir.
Bunun için yapılacak çözümlerden birisi cross tablolar kullanarak yazar id bilgisini ile kitap id bilgisini bu tabloda birleştirmektir. Böylece bu tabloda birden fazla yazar id bilgisini bir kitap için farklı kayıtlar olarak girebilirsiniz.

Bu durumda kitap tablosundan bilgileri SELECT ederken yazarların listesini almak problem olabilir.

Bu sorunu da COALESCE fonksiyonunu kullanarak çözebiliriz.
İlk adım olarak COALESCE kullanarak AuthorsListOfBook adında bir UserDefinedFunction oluşturabiliriz.

CREATE FUNCTION AuthorsListOfBook (
  @BookId int
)
RETURNS nvarchar(255)
AS
BEGIN

DECLARE @str AS nvarchar(255)

SELECT
  @str = COALESCE(@str + ', ', '') + FirstName + SPACE(1) + LastName
FROM BookAuthor (NoLock)
INNER JOIN BookAuthorCrossTable (NoLock)
  ON BookAuthorCrossTable.AuthorId = BookAuthor.AuthorId
WHERE BookAuthorCrossTable.BookId = @BookId

RETURN @str
END
Code




Bu AuthorsListOfBook adındaki UserDefinedFunction bize kitap kaydı için birden fazla kayıtta bulunan yazar id'lerini kullanarak yazar isimlerini "," karakteri ile birleştirerek nvarchar(255) tipinde bir string değişkeni içinde geriye döndürür.

Bu fonksiyon kitap ile ilgili genel bilgiyi çektiğimiz query (sorgu) içinde aşağıdaki şekilde kullanılabilir.

SELECT
  Site_Books.*,
  dbo.AuthorsListOfBook(Site_Books.BookId) as Authors
FROM Site_Books (NoLock)
WHERE Site_Books.BookId = @BookId
Code

COALESCE kullanımı ile ilgili daha detaylı bilgiyi aşağıdaki konuda bulabilirsiniz :
"COALESCE fonksiyonu ile bir tablonun bir kolonundaki değerleri bir string haline getirmek" başlıklı forumda bulabilirsiniz.



SQL Server

SQL Server 2019 Installation
download SQL Server 2019
download SQL Server 2017
download SQL Server 2016
download SQL Server 2014
download SQL Server 2012
MacOS ve SQL Server 2019


Copyright © 2004 - 2021 Eralper YILMAZ. All rights reserved.