【问题标题】:How to write a T-SQL Stored Procedure to return data from three database tables如何编写 T-SQL 存储过程以从三个数据库表中返回数据
【发布时间】:2015-05-12 13:48:35
【问题描述】:

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

Database Diagram

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

DataGridView to display above data

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

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

谁能告诉我用于检索我拥有的每本书的 Book_Title 和 Author_Name(s) 的 SQL 查询。

【问题讨论】:

  • 使用三个查询。我的猜测是您想要不同的 where 谓词,但是由于您的帖子中缺乏详细信息,因此我们无能为力。
  • @SeanLange,您想了解该问题的哪些详细信息?对不起,我是新手,所以我不能在我的帖子中包含任何图像。这就是为什么我附上了一些链接来展示我想要的东西。
  • 查看您发布的内容并问问自己是否可以提供帮助。答案当然是不。您发布的所有内容都是包含书籍信息的表格。然后你发布了一张带有三个标签的图片。什么是加书?什么是删书?你想展示什么?看看这篇文章。 spaghettidba.com/2015/04/24/…
  • @SeanLange,我特别提到我需要在“DataGridView”中“显示”以上数据,所以我拍摄了我的 DataGridView 放置位置和方式的快照。您不应该为其他选项卡而烦恼。只是想显示数据表的格式必须是什么。就是这样。 :)
  • @ZoharPeled,感谢您帮助我!

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


【解决方案1】:

这是非常基本的 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.

【讨论】:

  • 啊,这就是我要找的。当然我遇到过SQL JOINs,但问题是,我不知道如何同时JOIN 三个表。 :)
  • 另外,如果某个答案为您的问题提供了解决方案,请接受它,以便其他人知道问题已解决。欢迎来到stackoverflow。这是一个勇敢的新世界:-)
  • @ZoharPled,我怎么能在自己尝试之前接受这个作为解决方案?只要有耐心的人。我正在尝试应用您的解决方案,如果它解决了我的问题,我一定会将其标记为解决方案。 :)
  • 你是写that is what I'am looking for.的人,我以为你已经测试过了...
  • @ZoharPled,是的,但我没有说这是解决方案。在那一刻,我所看到的只是如何加入三个表。我的意思是。此刻,我尝试了您的代码,并且成功了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多