【问题标题】:Joins in mysql what to do加入mysql怎么办
【发布时间】:2013-07-04 07:25:17
【问题描述】:

好吧,我写了一个查询并得到一个错误:

字段列表中的列“product_id”不明确 错误号:1052

我需要从 2 个表中选择相同的 id 并按价格比较它们,这是我写的查询:

$product_sql_test1 = $this->db->query("SELECT `product_id` and 'price'    FROM `" . DB_PREFIX . "product_to_category`INNER JOIN (oc_product)ON oc_product.product_id=prdoduct_to_category.product_id WHERE product_to_category.id=product.id and  price >150 and `category_id`='".$product_info['related_kv4nt_id_1']."'  GROUP BY `product_id` ORDER BY rand() LIMIT 0,10");

哪里可能出现错误以及如何解决?对不起,如果问题太简单了。

【问题讨论】:

  • product_id 存在于多个连接表中,MySQL 不知道您指的是哪一个!使用table_or_alias_name.product_id 消除歧义。

标签: mysql get opencart


【解决方案1】:

在选择product_id的时候一定要提到表名,因为很多表都有这个列,mysql很困惑从哪个表中选择列

$product_sql_test1 = $this->db->query("SELECT oc_product.`product_id` and 'price'    
FROM `" . DB_PREFIX . "product_to_category`INNER JOIN (oc_product)ON 
oc_product.product_id=prdoduct_to_category.product_id WHERE product_to_category.id=product.id and  price >150 and prdoduct_to_category.`category_id`='".$product_info['related_kv4nt_id_1']."' 
GROUP BY oc_product.`product_id` ORDER BY rand() LIMIT 0,10");

【讨论】:

    【解决方案2】:

    使用全名:

    Tablename.ColumnName
    

    例如,在 GROUP BY 部分中,不清楚您指的是哪个 product_id

    【讨论】:

      【解决方案3】:

      在您的SelectGroup By 中,您都需要use your alias table names along with your column names,因为同一列存在于多个表中,因此对于结果使用哪一列存在混淆。

      【讨论】:

        【解决方案4】:

        为表和列使用别名。

        oc.product_id(用于列)和oc_product oc(用于表)一样访问它

        【讨论】:

          【解决方案5】:

          正确的做法是

          $product_sql_test1 = $this->db->query("SELECT `p`.`product_id`, `p`.`price` FROM `" . DB_PREFIX . "product_to_category` `p2c` LEFT JOIN `" . DB_PREFIX . "product` `p` ON `p`.`product_id` = `p2c`.`product_id` WHERE `p`.`price` > 150 and `p2c`.`category_id`='" . (int) $product_info['related_kv4nt_id_1'] . "' GROUP BY `p`.`product_id` ORDER BY rand() LIMIT 0,10");
          

          您还应该考虑格式化 SQL 以使其更易于阅读

          【讨论】:

            猜你喜欢
            • 2019-01-10
            • 1970-01-01
            • 2012-06-19
            • 1970-01-01
            • 2019-12-23
            • 2023-03-15
            • 2013-02-05
            • 1970-01-01
            • 2017-05-18
            相关资源
            最近更新 更多