For starters, I'm fairly new to SQL.
So, I am trying to develop an application in asp.net with blogs and categories in two languages. One of the functionalities is returning the name of a category in a particular language. Not all categories have two languages. Some have English, others have Italian, others have both. Here's the function that performs the select i was talking about.
DECLARE @Name NVARCHAR(250)
IF EXISTS(SELECT Name = Coalesce(BlogCategoryTranslation.Name, ' ')
FROM BlogCategoryTranslation WHERE BlogCategoryID = @CategoryID AND LanguageID=@LanguageID)
BEGIN
SET @Name=(SELECT Name
FROM BlogCategoryTranslation WHERE BlogCategoryID = @CategoryID AND LanguageID=@LanguageID)
END
ELSE
BEGIN
SET @Name=(SELECT top 1 Name FROM
BlogCategoryTranslation WHERE BlogCategoryID = @CategoryID AND LanguageID=@LanguageID);
END
RETURN @Name
Now I have a stored procedure that returns the Category Name for a given language. What I want is to always return a Category. If it doesn't exists in a particular language, i want to display the record in other language. Is this possible and if it is, what would be the suggestions in order to do that.
ALTER PROCEDURE [dbo].[BlogCategoryLanguage]
@BlogCategoryID INT,
@LanguageID INT
AS
BEGIN
SELECT BlogCategoryID AS 'CategoryID',
Language.Name AS 'Language',
dbo.BlogNameCategoryByLanguage(1,1) as 'Name',
dbo.Blog_PublishedInCategory(1,BlogCategory.ID) AS 'Published'
FROM BlogCategoryTranslation
INNER JOIN BlogCategory
ON BlogCategory.ID = BlogCategoryTranslation.BlogCategoryID
INNER JOIN Language
ON Language.ID = BlogCategoryTranslation.LanguageID
WHERE BlogCategoryID = 1
I would really appreciate a few tips. It's the first time i have posted a question here and I'm not quite sure how this works. If this is a repost somehow, sorry for that.
Aucun commentaire:
Enregistrer un commentaire