SQL Server - Bir üst satır ve tüm çocukları, bir ilişkide 1: n

Şu anda SQL Server kullanarak SQL öğreniyorum. Aşağıdaki sql kodunda olduğu gibi tbAuthors ve tbBooks olan iki tablom var:

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]
)

İstediğim şey, yazarın adını ve tüm kitaplarını, yazarın adı olmadan tekrar tekrar, aşağıdaki sorgulama yoluyla elde etmektir:

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 

ve sql sonucu budur:

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

Bilmek istediğim, aşağıdaki resimde bulunan sorguyu nasıl alabilirim?

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

Bir sorgudan geçmek mümkün mü, eğer öyleyse?

Bu soruna dikkat ettiğiniz için teşekkür ederiz.

0
StackOverflow'a hoş geldiniz: kod, xml veya veri örnekleri gönderirseniz, lütfen metin düzenleyicisindeki bu satırları vurgulayın ve "kod örnekleri" düğmesini ( {} ) tıklayın. editör araç çubuğu güzel biçimlendirmek ve sözdizimi vurgulamak için! Ayrıca, # 'ı çok sık kullanmamaya çalışın - satırları başlık olarak (örneğin

vb.) Yapmak için yorumlanır ve tablolarınızın gerçekten dağınık görünmesine neden olur!

katma yazar marc_s, kaynak

1 cevap

Bunu gerçekten sql üzerinden yapmak istememelisiniz; sql'nin başarması istenen şey bu değil. Bu tür bir sonuç, müşteri düzeyinde, sunum seviyesinde ele alınmalıdır. Tahminimce sonuçların henüz nasıl doğru bir şekilde tüketileceğini anlamıyorsunuz. Sonuç kümesiyle ne yapmayı planlıyorsunuz yazarın her satır için tekrarlanmasını istemezsiniz?

3
katma
Bir çiviyi çekiçlemek için tornavidayı nasıl kullanırım diye sormak gibi bir şey. Muhtemelen bunu başarmak için bazı yollarını bulabiliriz, ancak SQL'i doğru kullanmamanız gereken daha büyük sorunu kaçırıyor olabiliriz.
katma yazar Dylan Smith, kaynak
Cevabınız için teşekkürler, C# kod ile şüphem yok, ama bunu sql kullanarak yapmak mümkün olduğunu düşündüm.
katma yazar WizardDBA, kaynak