SQL 使用 Northwind 数据库查询(注意:没有内连接)

SQL Query with the Northwind database (Catch: no Inner Join)

首先 - 这是一项家庭作业,但我不要求任何人去做。相反,我需要有关如何构建查询的帮助。

作为作业的一部分,通过 Microsoft Access 使用 Northwind 数据库,我必须构造此查询:

The product ID, product name, and quantity ordered for all products ordered on an order taken by an employee with last name Fuller.

现在,当我在设计模式下构造查询时,这是我得到的代码:

SELECT Products.ProductID, Products.ProductName, [Order Details].Quantity
FROM Products INNER JOIN ((Employees INNER JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID) INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID) ON Products.ProductID = [Order Details].ProductID
WHERE (((Employees.LastName)="Fuller"));

正如我之前提到的,我们不允许使用 Inner Join。到目前为止,在搜索 text/notes 之后,我找不到如何去做。 (对 SQL 很陌生)

我会重写 FROM 语句吗?如果是这样,SELECT 和 WHERE 语句会改变吗?

更新:这是我重写的代码:

SELECT Orders.OrderID, Orders.CustomerID, Orders.ShipCity
FROM Products, Orders, [Order Details], Employees
WHERE
  Products.ProductID = [Order Details].ProductID
  AND Employees.EmployeeID = Orders.EmployeeID
  AND Ordes.OrderID = [Order Details].OrderID
  AND Employees.LastName = "Fuller";

不过我遇到了某种语法问题。由于Order Details必须用括号括起来,所以它要问的是我在WHERE语句中写的参数值。

不使用 INNER JOIN 的要求有点特殊,我不能保证这是为您的作业设计的。

另一种编写两个表之间简单关系的方法是使用 IN () 子查询,一般形式为:

SELECT *
FROM a_table
WHERE some_column IN (
  SELECT some_related_column
  FROM b_table
  WHERE some_condition
)

但是由于您必须代表 SELECT 列表中 4 个表中不止一个的列,因此该表单不适合您。另一种不 显式 使用 INNER JOIN 的方法是使用旧的隐式连接语法,其中多个表列在 FROM 子句中,用逗号分隔,并且他们的加入条件放在 WHERE 子句中而不是 ON.

一般形式为:

SELECT 
  a_table.col1,
  a_table.col2,
  b_table.col1
FROM
  a_table,
  b_table
WHERE
 a_table.some_column = b_table.some_related_column
 AND some_other_conditions

这是一个作业,我会把它留给你来计算整个陈述,但你的形式会像

SELECT
  Orders.OrderID,
  Orders.CustomerID
FROM 
  Products,
  Orders,
  [Order Details],
  Employees
WHERE
  Products.ProductID = [Order Details].ProductID 
  AND ... (the other table relationships)
  AND Employees.LastName = 'Fuller'

虽然它在功能上与显式 INNER JOINs 相同,但这是一种较旧的语法,现在通常不鼓励使用。 More discussion is available in this question