まず、質問がベストではないと謝罪します。私はSQLを使い慣れていないし、正しい言い回しを使ってそれをどのようにフレーズするのかもわからない。1つのSQLクエリで1つの行に各Author's Booksを表示できますか?
私はIDの主キーと名前と年齢の2つの列を持つAuthorsテーブルを持っています。
私はまた、プライマリキーがIdの書籍テーブルと、タイトル、価格、ページ、およびジャンルを持っています。
多対多関係は、他のテーブルのキーを使用してこれらの関係をペアにする中間テーブルを持つ必要があることを意味します。だから私はIdの主キー(おそらく不要)だけでなく、これらの列AuthorIdとBookIdを持つAuthorsBooksテーブルを持っています。
私の目標は、すべてのタイトルが後の列に表示された状態で、各著者を一度だけ表示する1つの結果/テーブルを作成することです。一部の著者は他の書籍よりも多くの書籍を保有している可能性がありますか?
SELECT DISTINCT Name
,Title
FROM [dbo].[AuthorsBooks]
JOIN dbo.Authors
ON AuthorId = Authors.Id
JOIN dbo.Books
ON BookId = Books.Id
このような何か生成する:
Author1 Book1
Author1 Book2
Author1 Book5
Author2 Book3
Author2 Book4
Author3 Book4
Author3 Book5
をしかし、私はこのような何かをしたい:
ここは私が取得しています私が今持っているだけでなく、結果であり、
Author1 Book1 Book2 Book5
Author2 Book3 Book4
Author3 Book4 Book5
これも可能ですか?いくつかのNULLを記入する必要がある場合(最後の列には、上/下の行と一致する十分な本がない作者のエントリがない場合)は問題ありません。私はGROUP BY句を試してみましたが、エラーが続いていて、数字ではないのでこの場合に機能する集約関数を見つけることができません。
初心者であれば、よりシンプルなソリューションが最適ですが、「シンプルな」ソリューションがない場合は、これにアプローチする方法を概念化するのに役立つものがあれば大いに感謝します。
多くの感謝!
を試すことができますか?このクエリは基本的に連結のようです。 – Goeff