【问题标题】:Oracle SQL Joins: List the book(id, title, and cost) and author(id, name) info for all books in the collection. [42 rows]Oracle SQL 连接:列出集合中所有书籍的书籍(id、标题和成本)和作者(id、名称)信息。 [42 行]
【发布时间】:2019-11-14 08:16:06
【问题描述】:

列出集合中所有书籍的书籍(id、标题和成本)和作者(id、名称)信息。 [共 42 行](在这个问题集中,使用 WHERE 子句形成等连接)

Oracle 9i 服务器(是的,它是旧的)

book table 包含 40 行

author 表包含 15 行

到目前为止我有什么:

DESCRIBE book;
DESCRIBE author;

SELECT * FROM book;
SELECT * FROM author;


SELECT book.ID,book.TITLE,book.COST,author.ID,author.NAME
FROM book,author
DESCRIBES:
Book table:
    Name          Null?           Type
    ID             NOT NULL      NUMBER(5)
    TITLE          NOT NULL      VARCHAR2(64)
    COPYYEAR                     NUMBER(4)
    PUBLID                       NUMBER(5)
    COST                         NUMBER(5,2)
    LOCATION                     VARCHAR2(8)

Author Table:
    Name         Null?         Type
    ID           NOT NULL    NUMBER(5)
    NAME         NOT NULL    VARCHAR2(32)
    LASTNAME     NOT NULL    VARCHAR2(20)
    BIRTHDATE                  DATE
    DEATHDATE                  DATE

【问题讨论】:

  • 向我们展示一些示例表数据和预期结果。 (作为格式化文本,没有图像。)另外看看minimal reproducible example
  • 顺便说一句,Oracle 9 不支持显式 JOIN?!?
  • 书籍和作者是如何关联的?什么是公开的?

标签: sql database oracle join


【解决方案1】:

嗯,您的表定义或 SQL 中缺少某些内容。从问题中,我认为 book.ID 列是任何给定 BOOK 的 ID,而 author.ID 是 AUTHOR 的 ID。如果是这种情况,那么您的 BOOK 表需要有作者的 ID,因为它在 AUTHOR 表中。然后你可以加入这两列。 现在,如果这些 book.ID 是作者的 ID,那么您需要像这样编写查询: 选择 ... 从书,作者 其中 book.id=author.id

或使用 ANSI 连接语法

选择... from book join author on (book.id=author.id) /* 也可以使用自然连接语法 */

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2014-06-01
    • 2021-04-30
    相关资源
    最近更新 更多