2017-04-21 69 views
0

我剛開始學習T-SQL,任何人都可以指出我的錯在哪裏?任何幫助將不勝感激!從DataCamp T-sql數據庫分配

問題:

AdventureWorksLT數據庫包括名爲dbo.ufnGetAllCategories表值函數,它返回產品類別的表(例如,「公路自行車」)和親本的類別(例如「自行車」)。

說明:

編寫使用該函數返回的所有產品,包括他們的父類和自己的類別列表的查詢。確保使用提供的別名和其他地方的默認列名。

我曾嘗試:

CREATE FUNCTION dbo.ufnGetAllCategories(@ProductCategoryID AS Integer); 
RETURNS TABLE 
AS 

RETURN 
(SELECT C.ParentProductCategoryName AS ParentCategory, 
    C.ProductCategoryName AS Category, 
    P.ProductID, P.Name AS ProductName 
FROM SalesLT.Product AS P JOIN SalesLT.ProductCategory AS C 
ON P.ProductCategoryID = C.ProductCategoryID 
JOIN dbo.ufnGetAllCategories() AS f 
ON P.ProductCategoryID = f.ProductCategoryID 
ORDER BY ParentCategory, Category, ProductName); 

我的輸出:

不正確提交

溶液中的列ParentCategory不具有相同的名稱和值在列你的結果。

+0

你可以請編輯您的帖子,從每個表提供了一些樣本數據,所以我們可以更清楚地看到架構。你爲什麼要在頂部創建函數?你是不是應該使用提供的功能來解決問題,而不是設計功能?你底部的輸出並沒有真正告訴我們任何事情,因爲它不是SQL錯誤,這只是你提交這個給大家的任何作業網站的東西。 – EMUEVIL

+0

請閱讀[this](http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/),瞭解有關改善問題的一些提示。 – HABO

+0

感謝TheGameiswar。 這裏是未校正的問題 SELECT C.ParentProductCategoryName AS ___, C.ProductCategoryName AS ___, P.ProductID,P.Name AS ___ FROM SalesLT.Product爲P JOIN DBO .___()AS ___ P上.___ = C.___ ORDER BY ParentCategory,Category,ProductName; 表是以下 – Noble2017

回答

0

我相信你在解決這個問題上非常接近。該函數是一個表值函數。

select * 
from [dbo].[ufnGetAllCategories]() 

並給出如下所示的輸出。

Result from table valued function

所以,你可以使用dbo.ufnGetAllCategories()作爲一個普通的表。

select C.ParentProductCategoryName as ParentCategory 
    , C.ProductCategoryName as Category 
    , P.ProductID 
    , P.Name as ProductName 
from SalesLT.Product as P 
    join dbo.ufnGetAllCategories() as C on P.ProductCategoryID = C.ProductCategoryID 
    order by ParentCategory, Category, ProductName; 

,導致:

Overall result

+0

由於公園Ubbink,使用您的每個字的代碼都會給出一個結果,就像您發佈的一些注意事項一樣。首先,我得到了一個代碼錯誤; 「錯誤的提交:解決方案中的Column ParentCategory在結果中沒有具有相同名稱和值的列」。其次,別名不用於替換列標題名稱,我不知道爲什麼。 最後一個問題:爲什麼你在SELECT語句中的字母f之前和之後使用了兩個星號(*)? 感謝您的幫助 – Noble2017

+0

double *是爲了使文本變爲粗體,它只是文本格式。但我認爲它不適用於代碼格式。 –

+0

你能提供你正在接受的課程嗎?我無法找到解決t-sql的特定課程,只有[DataCamp - Python中的數據庫簡介](https://www.datacamp.com/courses/introduction-to-relational-databases-in-python) –