【发布时间】:2014-06-07 18:37:01
【问题描述】:
本周我正在研究多个表连接,并返回了一些奇怪的结果。这是场景...
使用正确的表,使用传统的连接操作创建一个查询,该操作将列出客户的名字和姓氏、书名和订单日期(格式为 MM/DD/YYYY,别名为“Order Date” ”) 为所有购买了 'PRINTING IS US' 出版书籍的客户。
对于我查询的数据库,此查询的正确表是 BOOK_CUSTOMER、BOOKS、BOOK_ORDER 和 PUBLISHER。我写的语句返回了我需要的信息,但它返回了将近 5900 条记录。我不明白这怎么可能是正确的。出版商 Printing is Us 仅在数据库中列出了 14 本书,并且只有 20 条客户记录,因此即使每个客户购买了每本 Printing is Us 书,也只会返回 280 条记录。但是我无法弄清楚我有什么问题。我的陈述如下。
SELECT bc.firstname, bc.lastname, b.title, TO_CHAR(bo.orderdate, 'MM/DD/YYYY') "Order Date", p.publishername
FROM book_customer bc, books b, book_order bo, publisher p
WHERE(publishername = 'PRINTING IS US');
有人对我在这里缺少什么有任何想法吗??
谢谢。
【问题讨论】:
-
您缺少
JOINclause。或者说是三个。 -
关闭 - 他错过了比较。实际上,他有
JOIN子句,但没有ON子句。当然,最好避免使用隐式连接语法(逗号分隔的FROM子句),但至少该类似乎将其称为“传统”连接。