2010-04-22 67 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