【发布时间】:2014-03-25 17:09:51
【问题描述】:
我有一个 mysql 查询,它连接 5 个不同的表以返回产品的特定属性。它应该只退回每个产品一次。但由于产品可能有多个类别,它会为每个类别返回一次产品。
这里是选择:
选择不同的 pd.name 作为 pname, p.price AS 价格, cd.name AS cname, pd.description 作为 pdescription, pd.language_id AS language_id, pd.product_id AS product_id, p.model AS 模型, p.sku 作为 sku, p.upc 作为 upc, m.name AS 品牌 FROM {$this->prefix}product_description pd 左连接 {$this->prefix}product_to_category pc 开(pd.product_id = pc.product_id) INNER JOIN {$this->prefix}product p 开(pd.product_id = p.product_id) 左连接 {$this->prefix}category_description cd 开(cd.category_id = pc.category_id AND cd.language_id = pd.language_id) LEFT JOIN {$this->prefix}manufacturer m 开(m.manufacturer_id = p.manufacturer_id)如果给定的产品,比如 product_id 32 分配给多个类别,它将为每个类别返回一次 product_id 32,唯一的区别是结果 cname 是类别名称。
如果有人可以帮助修改选择以仅包含每个产品一次,无论类别如何,我都将不胜感激。
将类别返回为产品的 MAX() category_id 也会很有帮助,但如果要求太多,也不是什么大问题。
谢谢。
【问题讨论】:
-
SHOW CREATE TABLE tablename;和样本数据。最好使用SQLFiddle。