我正在玩Opencart的1.4.9.4数据库。由于我对数据库没有经验,我发现结构很奇怪(很难,很疯狂)。例如:
如果我需要显示模型和product
的名称,我需要加入2个表产品和 product_description ,以及类别,制造商等相同的方法。
表中只有两个字段, product_to_category ,字段: category_id 和 product_id 。我使用了多少个JOIN,如果我真的应该使用JOIN,使其工作?
但是一个非常奇怪的事情就是在我获得产品ID,NAME和MODEL与CATEGORY NAME和MANUFACTURER NAME的情况下进行查询,我不知道如何实现这一点。它会涉及到这个表,至少我认为:
产品,product_description,product_to_category,category_description和制造商。
抱歉这个烂摊子,但我现在的想法很乱!
答案 0 :(得分:3)
在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";
答案 1 :(得分:-2)
对不起,我完全忘了这个: MySQL SELECT Duplicated rows from OpenCarts DataBase 我已经问过了。