【问题标题】:How do you join three tables in Oracle? [closed]Oracle中如何连接三个表? [关闭]
【发布时间】:2014-02-03 16:42:18
【问题描述】:

我很难在Oracle 中加入三个单独的表。我以前从未加入过三张桌子,所以我不太精通。我的理论如下:

SELECT customer_num WHEN customer_num IS 104 -198, order_num
  FROM orders INNER JOIN items
    ON order_num, stock_num
    INNER JOIN stock
      ON stock_num, description

基本上,我试图从ORDERS 表开始,并从订单表中提取客户编号(customer_num),特别是客户编号104 -108 和order_num。然后将orders表附加到Items表并附加order_num和stock_num,最后附加stock表并拉出stock_num和description。

【问题讨论】:

  • 请阅读help center 和How to Ask 页面。您没有向我们展示表架构、示例输入或预期输出,但我们应该预测查询?

标签: sql oracle join inner-join


【解决方案1】:

您的语法无处不在,不适用于两表连接,甚至查询单个表。不知道你从哪里得到WHEN,或者你的条款的顺序。请查看SQL reference 以了解如何加入以及如何过滤。总之……

你似乎想要这样的东西:

SELECT o.customer_num, o.order_num, i.stock_num, s.description
FROM orders o
INNER JOIN items i ON i.order_num = o.order_num
INNER JOIN stock s ON s.stock_num = i.stock_num
WHERE o.customer_num BETWEEN 104 AND 198;

WHERE 子句应用于orders 表以限制您获得哪些客户的订单。我从您的描述中假设orders 和items 表有一个共同的order_num 列,您可以加入; items 和 stock 表有一个共同的 stock_num 列,您可以加入。

正如 OldProgrammer 所说,将您的表架构包含在问题中会很有帮助,因此不需要做出假设,并且显示示例数据和该数据的预期输出将阐明您正在尝试做什么。

【讨论】:

    【解决方案2】:

    它应该看起来像这样(基于有关架构的有限信息)...

    SELECT 
        O.CUSTOMER_NUM, 
        O.ORDER_NUM, 
        S.STOCK_NUM,
        S.DESCRIPTION
    FROM 
        ORDERS O,
        ITEMS I,
        STOCK S
    WHERE
        I.CUSTOMER_NUM >= 104
        AND I.CUSTOMER_NUM <= 198
        AND O.ORDER_NUM = I.ORDER_NUM
        AND I.STOCK_NUM = S.STOCK_NUM
    

    【讨论】:

      【解决方案3】:

      JOIN 的语法是:

      TableExpression [ INNER ] JOIN TableExpression
      {
        ON booleanExpression |    USING clause
      }
      

      booleanExpression 是链接表的对象。所以,在你的例子中,是这样的:

      SELECT customer_num WHEN customer_num IS 104 -198, order_num
      FROM orders INNER JOIN items
        ON orders.<some_column> = items.<some_column>
      INNER JOIN stock
        ON items.<some_column> = stock.<some_column>
      

      【讨论】:

        猜你喜欢
        • 2016-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 1970-01-01
        • 2012-06-26
        相关资源
        最近更新 更多