2017-04-21 9 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

:に結果の

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; 

。なぜ、上部に関数を作成していますか?関数を設計するのではなく、問題を解決するために提供された関数を使用することになっていますか?下の方の出力は、SQLエラーではないので、実際には何も教えてくれません。それはあなたがこれをLOLに提出している宿題サイトのものです。 – EMUEVIL

+0

あなたの質問を改善するためのヒントについては、[こちら](http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/)をお読みください。 – HABO

+0

ありがとうTheGameiswar。 ここPに補正されていない問題___ AS SELECT C.ParentProductCategoryName、AS C.ProductCategoryName ___ P (.___ DBOをJOIN AS SalesLT.Product FROM、 P.ProductID、AS P.Name ___ )AS ___ あります.___ = C.___ ORDER BY ParentCategory、カテゴリ、ProductName; テーブルは – Noble2017

答えて

0

私はあなたがこの課題を解決するのに非常に近いと信じています。関数はテーブル値関数です。

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

出力は次のようになります。

Result from table valued function

だから、普通のテーブルとしてdbo.ufnGetAllCategories()を使用することができます。あなたは私たちがより明確にスキーマを見ることができるように、各テーブルからいくつかのサンプルデータを提供するために、あなたの投稿を編集してくださいすることができ

Overall result

+0

おかげ公園Ubbink、単語のコードワードは、あなたがいくつかの注意書きで投稿したものとまったく同じ結果を返します。まず、コードエラーが発生しました。 "不適切な提出:ソリューションの列ParentCategoryに結果に同じ名前と値の列がありません"。次に、エイリアスは列ヘッダー名を置き換えるために使用されなかったため、理由はわかりません。 最後の質問:なぜ、SELECTステートメントの文字fの前後に2つのアスタリスク(*)を使用しましたか? あなたの助けをありがとう – Noble2017

+0

ダブル*はテキストを太字にすることを意図していました。単なるテキストフォーマットです。しかし、私はそれがコード形式で動作しないと思う。 –

+0

あなたは履修しているコースを提供できますか?私はt-sqlに対処する特定のコースを見つけることができません。[DataCamp - Pythonのデータベースの紹介](https://www.datacamp.com/courses/introduction-to-relational-databases-in-python) –