【问题标题】:How to make a SELECT with joins between tables in Opencart's database?如何使用 Opencart 数据库中的表之间的连接进行 SELECT?
【发布时间】:2011-04-03 20:06:46
【问题描述】:

我正在使用 Opencart 的 1.4.9.4 数据库。而且由于我对数据库没有经验,我发现结构很奇怪(很难,很疯狂)。例如: 如果我需要显示product 的型号和名称,我需要加入 2 个表 productproduct_description,并且对类别、制造商等采用相同的方法。 有一个表只有两个字段,product_to_category,字段:category_idproduct_id。如果我真的应该使用 JOIN,我使用了多少个 JOIN 来使其工作? 但是一件非常奇怪的事情是在我得到产品 ID、名称和型号以及类别名称和制造商名称的地方进行查询,我不知道如何实现这一点。它会涉及到桌子,至少我认为: 产品、product_description、product_to_category、category_description 和制造商。 抱歉弄得一团糟,但我现在脑子一片混乱!

【问题讨论】:

  • 我会投票关闭这堵文字墙,除非你能把它变成一个问题。此外,您似乎对this question 中的连接做得很好。自那以后发生了什么变化?
  • 哦,我完全忘记了!谢谢你,兄弟。我不知道我的记忆发生了什么。需要更多的睡眠。我真的很抱歉,这很尴尬。 :(

标签: mysql select join opencart


【解决方案1】:

在 opencart 中,您将 product_id 值连接在一起以获得整行数据(并使用 where 子句设置描述的正确语言 ID,所以

SELECT * FROM product p LEFT JOIN product_description pd ON p.product_id = pd.product_id WHERE pd.language_id = 1 LIMIT 20

这将从两个表中获取所有数据,并使用限制为 20 个产品和语言 1(默认为英语)正确连接它们。当然,在php中正确编写时,您将需要动态调用一些数据(例如表前缀和语言id),因此如果您有多种语言或带有前缀的数据库表,它也可以工作。类似的东西

$query = "SELECT * FROM `" . DB_PREFIX . "product` p LEFT JOIN `" . DB_PREFIX . "product_description` pd ON p.product_id = pd.product_id WHERE pd.language_id = " . (int)$this->config->get('config_language_id') . " LIMIT 20";

【讨论】:

  • 非常感谢,但我完全忘记了我已经问过这个问题了。对不起杰。
【解决方案2】:

对不起,我完全忘记了这一点: MySQL SELECT Duplicated rows from OpenCarts DataBase 我已经问过了。

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    相关资源
    最近更新 更多