我需要帮助格式化 SQL 查询中的内部连接命令
Posted
技术标签:
【中文标题】我需要帮助格式化 SQL 查询中的内部连接命令【英文标题】:I need help formatting inner join command in SQL query 【发布时间】:2015-12-17 20:52:37 【问题描述】:这是我的 SQL Server 的 ERD: https://c2.staticflickr.com/6/5832/23786188186_d6f1d93132_o.jpg
我需要找出与每个出版商相关联的书籍。
USE BookStoreDB
SELECT ProductID
FROM Books
INNER JOIN [Publishers] PublisherID ON PublishersID = ProductID
我假设我没有正确创建 INNER JOIN 命令?
【问题讨论】:
或者,您知道,您加入的是PublishersID = ProductID
,而不是B.PublisherID = P.PublisherId
?
你能举一个两个表中数据的例子吗?当前语句是否给出错误?它只是返回错误的东西吗?
为什么将 Publishers 别名为“PublisherID”?看起来你只需要真正弄清楚你的语法。
表名之后的第一个词(只要该词不是as
)被引擎解释为该表的别名。因此,在您的示例中,您将发布者别名为 PublisherID,然后尝试将未知对象 publishersID
上的表加入到列 productID;现在,如果两个表中都存在 productID,那么数据库将不知道您的意思是哪个表中的哪一列。
【参考方案1】:
SELECT p.PublisherID, b.ProductID
FROM Books b
INNER JOIN Publishers p ON p.PublisherID = b.PublisherID
【讨论】:
这是一个正确的联接,但他仍需要将一些与出版商相关的字段添加到选择列表中以获取“哪些书与每个出版商相关联”。 使用更多数据更新查询。【参考方案2】:连接的 ON 部分定义了两个表如何相互关联。在您的情况下,它将是:
INNER JOIN Publishers ON (Books.PublisherID = Publishers.PublisherID)
如果您在表名和 ON 之间添加一些内容,则将其视为别名。您可以(也应该)在 SELECT 中使用这些别名
FROM Books B
INNER JOIN Publishers P ON (B.PublisherID = P.PublisherID)
最后,您可能希望选择能够真正告诉您发布者是谁的信息:
SELECT B.ISBN, P.CompanyName
FROM Books B
INNER JOIN Publishers P ON (B.PublisherID = P.PublisherID)
【讨论】:
以上是关于我需要帮助格式化 SQL 查询中的内部连接命令的主要内容,如果未能解决你的问题,请参考以下文章