2010-04-22 68 views
0

你好,我有一个产品表中包含正常的产品和配置产品MySQL查询不同组由

它有一个基本的stucture:

  • ID
  • 价格
  • 可配置('是','否')
  • id_configuration

正常产品具有可配置no和0作为id配置,并且可配置产品将其设置为yes并具有相同的id_configuration值。

当前查询为:

SELECT `products`.* 
FROM `products`, `categories`, `product_categories` 
WHERE `categories`.`id` = 23 AND 
     `products`.`id` = `product_categories`.`id_product` AND 
     `categories`.`id` = `product_categories`.`id_category` AND 
     `products`.`active` = 'yes' 
ORDER BY `pos_new` ASC, `created` DESC LIMIT 0,20 

我想知道如果有一种方法可以按id_configuration,但只适用于配置的产品。原因是我只想要在搜索中显示其中一个配置产品。 我想我可以做一个加入,但想知道是否有办法做某种特殊的小组。 例如,对于可配置的是现场应当id_configuration否则它应该是id字段

非常感谢任何sugestions

+1

您的查询语法错误:'... AND ORDER BY ...'。猜想'AND'应该被移除? – 2010-04-22 08:42:12

+0

谢谢..更新 – 2010-04-22 08:49:32

回答

1

您可以在组使用CASE语句BY子句和GROUP BY id_configuration如果配置是'是',或者是id,如果不是,那么它是唯一的(因此相当于不分组)。

SELECT * FROM `products` 
GROUP BY CASE `configurable` WHEN 'yes' THEN `id_configuration` ELSE `id` END 
+0

+1为我带来更好的答案,我的特殊问题。我现在有一个查询执行一个相当复杂的查询(多个连接),以便为一行获取合适的“GROUP BY”标记。 – Tiemen 2011-10-31 13:30:49