我需要帮助格式化 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 查询中的内部连接命令的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询帮助 - 错误的数据格式解决方法?

具有两个内部连接的 PostgreSQL 查询

linux基本命令

Linux命令的使用格式以及命令帮助信息的获取方式

避免 Spark SQL 查询的笛卡尔连接

将日期转换为另一种格式的 SQL 查询