如何编写T-SQL存储过程以从三个数据库表返回数据

时间:2015-05-12 13:48:35

标签: c# sql-server stored-procedures datagridview

我必须显示以下三个表中的数据('dbo.BookAuthor'是映射表)。

Database Diagram

我需要编写一个存储过程来从存储过程中检索数据,并将该数据填充到DataGridView中,如下所示。

DataGridView to display above data

请帮我编写SQL查询,通过匹配ID来使用中间BookAuthor表从Book和Author表中检索数据。

这就是我的数据库的设计方式。书籍表的主键为Book_ID 作者表的主键也为Author_ID 因为每本书都可以由多位作者书写,所以我已经放置了另一张表(BookAuthor表)来映射每本书及其作者。
因此,BookAuthor表同时具有Book_IDAuthor_ID作为Book表和Author表中的外键,包括它自己的主键BookAuthor_ID

有人可以告诉我用于检索每本书的Book_Title和Author_Name的SQL查询。

1 个答案:

答案 0 :(得分:2)

这是非常基本的SQL 我建议你阅读一个sql教程。 您需要的是JOIN 试试这个:

SELECT [Name], [Title]
FROM Book 
INNER JOIN BookAuthor ON(Book.Book_Id = BookAuthor.Book_Id)
INNER JOIN Author ON(BookAuthor.Author_Id = Author.Author_Id)

此外,对于将来的问题,请将您的表格描述为使用DDL语句,并在需要时使用DML语句提供示例数据。在问题的文本中将所需的输出更好地描述为代码块。有关详细信息,请阅读how to ask.