SQL Server - 親行とそのすべての子を関係1:nで取得する

私は現在、SQL Serverを使用してSQLを学習しています。次のSQLコードのように tbAuthorstbBooks の2つのテーブルがあります。

CREATE TABLE [dbo].[tbAuthors](
    [id_Author] [int] NOT NULL,
    [nameAuthor] [varchar](50) NOT NULL,
 CONSTRAINT [PK_tbAuthors] PRIMARY KEY CLUSTERED ([id_Author] ASC)
)

CREATE TABLE [dbo].[tbBooks](
    [idBooks] [int] NOT NULL,
    [bookName] [varchar](50) NOT NULL,
    [FKAuthor] [int] NOT NULL,
 CONSTRAINT [PK_tbBooks] PRIMARY KEY CLUSTERED ([idBooks] ASC)ON [PRIMARY]
)

私が欲しいのは、作者の名前だけを取得することであり、著者の名前を使わずにすべての彼の書籍は、次のクエリを繰り返して表示され、私はこのデータを取得します:

select distinct ta.id_Author, ta.nameAuthor, tb.bookName 
from tbAuthors as ta 
inner join tbBooks as tb on tb.FKAuthor=ta.id_Author where tb.FKAuthor = 1 

SQLの結果は次のとおりです。

id_Author  nameAuthor   bookName
   1       Author1      Book1
   1       Author1      Book2
   1       Author1      Book3
   1       Author1      Book4 

私が知りたかったのは、次の画像にあるクエリをどのように取得するのですか?

id_Author   nameAuthor   bookName
   1        Author1      Book1
 empty      empty        Book2
 empty      empty        Book3
 empty      empty        Book4

もしそうなら、それを照会することは可能ですか?

この問題にご関心をお寄せいただきありがとうございます。

0
StackOverflowへようこそ:コード、XML、またはデータサンプルを投稿する場合は、テキストエディタでそれらの行を強調表示し、[コードサンプル]ボタン( {} )をクリックしてくださいエディタのツールバーをきれいにフォーマットし、構文を強調表示する!また、をあまり頻繁に使わないようにしてください。(

のように)見出しをつけるように解釈され、テーブルが本当に乱雑に表示されます。

追加された 著者 marc_s,

1 答え

あなたは本当にsqlでこれをやりたいとは思わないはずです。それはSQLが達成しようとしているものではありません。そのような結果は、プレゼンテーションレベルでクライアントコードで処理する必要があります。私はあなたがちょうど結果セットを適切に消費する方法を理解していないと推測しています。それぞれの行でauthornameを繰り返さないようにするために、結果セットを使って何をする予定ですか?

3
追加された
それは、どのように釘を打つためにドライバーを使用するのかという質問のようなものです。おそらくそれを実現する方法がいくつか考えられますが、SQLを正しく使用していないという大きな問題はありません。
追加された 著者 Dylan Smith,
あなたの答えをありがとう、C#コードでは間違いないが、私はそれがSQLを使用してこれを行うことが可能だと思った。
追加された 著者 WizardDBA,