【问题标题】:joining two tables in SQL oracle在 SQL oracle 中连接两个表
【发布时间】:2017-09-09 09:53:47
【问题描述】:

我正在尝试在 oracle sql 中加入两个表,但我似乎无法让它工作。下面的sql是我到目前为止所拥有的。车型在车辆表中,价格在购买表中。他们共同的关键是ID。有人可以告诉我出了什么问题并提供可能的解决方法吗?

SELECT cartype, price
FROM VEHICLE547896
INNER JOIN PURCHASE547896
ON ID = ID

据我所知,这个问题之前有人问过,但我仍然很困惑。

【问题讨论】:

  • 只是说你不能让它工作是没有帮助的 - 有什么问题?你有错误吗?结果不正确?还要再次查看您的查询;如果两个表都有一个名为 ID 的列,您认为ON ID = ID 的每一侧都引用了哪个表的列?
  • 你是说VEHICLE的ID必须等于PURCHASE的ID?你确定吗?
  • 你的表真的叫 VEHICLE547896 和 PURCHASE547896 吗?看起来更像是某种车辆和购买 ID。
  • @jarlh 你是什么意思?我的表真的被称为 VEHICLE547896 和 PURCHASE547896
  • 只是非常奇特的表名。你是怎么选择这些名字的?

标签: sql oracle join


【解决方案1】:

您需要更好地理解表关系。

当它被保存到PURCHASE547896 表时,验证VEHICLE547896 中的ID 的等价物。

VehicleID吗? Vehicle_ID?或类似的东西。因为PURCHASE547896 中的ID 肯定是购买的ID,而不是车辆。

SELECT cartype, price
FROM VEHICLE547896 AS v
INNER JOIN PURCHASE547896 AS p
ON v.ID = p.VehicleID

【讨论】:

    【解决方案2】:
    SELECT cartype, price
    FROM VEHICLE547896 a
    INNER JOIN PURCHASE547896 b
    ON a.ID = b.ID
    

    【讨论】:

    • 谢谢刚刚尝试过,它工作正常,但是当我将 ID 添加到 select 语句时,它说列定义不明确。你知道这是为什么吗?
    • 您需要提及从哪一列中选择的表名,否则它会混淆从哪个表中选择该列,因为它们的名称在两者中都相同。
    • SELECT cartype, price,a.id,b.id FROM VEHICLE547896 a INNER JOIN PURCHASE547896 b ON a.ID = b.ID
    • 因为查询想要显示 ID 列,但有两种可能性 - 车辆 ID 或购买 ID。用表别名为 select 中的列添加前缀,即 a.id OR b.id
    • 我会使用 v 和 p 作为表别名。
    【解决方案3】:

    如果你有同名的列,那么你还需要在它之前命名表

    SELECT VEHICLE547896.cartype, PURCHASE547896.price
    FROM VEHICLE547896
    INNER JOIN PURCHASE547896 ON PURCHASE547896.ID = VEHICLE547896.ID
    

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      相关资源
      最近更新 更多