【问题标题】:Joins not working in SQL Code not joining corectly strange errors occurring连接在 SQL 代码中不起作用,没有连接发生正确的奇怪错误
【发布时间】:2021-06-22 16:11:25
【问题描述】:

我已经尝试让这段代码运行近六个小时,并且我已经完成了近六个小时的研究。

最初这段代码是通过 PHP 从数据库中输出到 CSV 文件中的..

我要做的就是拥有三个不同的表,并通过它们的 order_ID 将它们全部连接在一起

每次我在 PHP 中尝试执行此操作时,我的管理员都会在输出中出现奇怪的代码,即未正确连接或出现某种奇怪的错误。任何人都可以弄清楚这是怎么回事的任何帮助将不胜感激

SELECT
oc_order.store_url,
oc_order.order_id,
oc_order.firstname,
oc_order.lastname,
oc_order.email,
oc_order_option.order_id,
oc_order_option.name,
oc_order_option.value,
oc_order_product.order_id,
oc_order_product.name,
oc_order_product.model,
oc_order_product.quantity
FROM oc_order, oc_order_option , oc_order_product
ORDER BY oc_order.order_id,oc_order_option.order_id,oc_order_product.order_id

【问题讨论】:

  • 只是FROM oc_order, oc_order_option , oc_order_product 不会通过他们的order_ID 加入表格。您缺少正确的连接和 ON 子句。
  • 我在 PHP MyAdmin 中尝试过这个,它有一半的工作,它不断地使一列重复条目,因为一些未知的原因。 FROM oc_order INNER JOIN oc_order_product ON oc_order.order_id = oc_order_product.order_id;
  • 如果你搜索的话,你必须研究一下连接:mysqltutorial.org/mysql-join 等等。

标签: php mysql export-to-csv


【解决方案1】:

如前所述,您缺少 ON 子句。当您在 SQL 查询中使用多个表时,您的 LEFT 表(from 子句中的第一个表)被连接到第二个(右表)。 “ON”子句说明表 1 与表 2 的关系。在您的情况下,您有一个表 3。这是表 1 到表 3 之间还是表 2 到表 3 之间的关系。我将更新查询,您将由于您没有显示结构,因此需要填写一些空白。此外,使用表别名使代码更具可读性,尤其是在表名变长的情况下。一会儿你就会看到。

SELECT
      o.store_url,
      o.order_id,
      o.firstname,
      o.lastname,
      o.email,
      oOp.order_id,
      oOp.name,
      oOp.value,
      p.order_id,
      p.name,
      p.model,
      p.quantity
   FROM 
      oc_order o 
         JOIN oc_order_option oOp
            on o.order_id = oOp.order_id
         JOIN oc_order_product p
            on o.order_id = p.order_id
   ORDER BY 
      o.order_id

注意表名的缩写别名,“o”代表 oc_orders,“oOp”代表 oc_order_option,“p”代表 oc_order_product

再次,您需要确认左表上的“ON”子句与右表相关联。我过去曾与制造业合作,并看到有人订购。购买产品,并且该产品具有选项,因此在订单的详细信息行中是否有特定产品的某些内容,该特定产品具有订单选项表的 ID。那是您可能需要关注的地方。同样,我拥有的其他系统也会有类似的层次结构

Order
   Customer (who ordered)
   OrderDetails (what of multiple products were ordered)
      Product ( per orderDetail, what was the product)
         ProductOption (color,size,etc)

看到分层表示了吗?在这种情况下,您不只是从 Order 表转到 Product 选项。您必须了解产品的详细信息到产品的选项。无论如何,HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多