首先也是最重要的--这是一项家庭作业,但我并没有要求任何人去做。相反,我需要帮助如何构造查询。
作为赋值的一部分,通过Microsoft Access使用Northwind数据库,我必须构造这个查询:
由姓Fuller的员工订购的所有产品的产品ID、产品名称和数量。
现在,当我在设计模式中构造查询时,我得到的代码如下:
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"));正如我前面提到的,我们不允许使用内部连接。到目前为止,在仔细阅读课文/笔记之后,我找不到该怎么做。(对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";不过,我遇到了语法问题。由于订单细节必须包含在括号中,所以它希望为我在WHERE语句中所写的内容请求参数值。
发布于 2015-01-20 19:42:43
不使用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 JOIN的相同,但这是一种较旧的语法,而且现在经常被禁止使用。More discussion is available in this question
https://stackoverflow.com/questions/28052735
复制相似问题