2012-07-05 86 views
2

我有一個查詢成功地從我的產品表中抓取獨特的產品並顯示它們。我試圖在混合中添加一個圖標表,其中一些產品可以有多個圖標。問題是我試圖只使用連接,並且當一個產品有2個圖標時,我會爲該產品選擇2行。左連接導致重複行

這裏是我的SQL:

SELECT p.products_image, 
      pd.products_name, 
      p.products_id, 
      p.products_model, 
      p.manufacturers_id, 
      p.products_price, 
      p2i.icons_id, 
      p.products_tax_class_id, 
      IF(s.status, s.specials_new_products_price, NULL)    AS 
      specials_new_products_price, 
      IF(s.status, s.specials_new_products_price, p.products_price) AS 
      final_price 
    FROM products p 
      LEFT JOIN manufacturers m 
        ON p.manufacturers_id = m.manufacturers_id 
      LEFT JOIN specials s 
        ON p.products_id = s.products_id 
      LEFT JOIN products_to_categories p2c 
        ON p.products_id = p2c.products_id 
      LEFT JOIN products_description pd 
        ON p.products_id = pd.products_id 
      LEFT JOIN products_to_icon p2i 
        ON p.products_id = p2i.products_id 
    WHERE p.products_status = '1' 
      AND pd.language_id = '1' 
      AND p2c.categories_id = '36' 

回答

9

末添加GROUP BY條款。 如果您仍然希望所有的圖標標識,你可以用group_concat

例如爲:

SELECT p.products_image, 
     pd.products_name, 
     p.products_id, 
     group_concat(p2i.icons_id separator ",") as icons_ids 
     (...) 
WHERE p.products_status = '1' 
     AND pd.language_id = '1' 
     AND p2c.categories_id = '36' 
GROUP BY p.products_id 
+0

結合但後來我只選擇在選擇的1個圖標沒有?至少當我在phpmyadming中執行該查詢時,我只得到2行(兩個產品),並且每行只能看到1個圖標。我想我需要重新考慮這個實際情況。也許只顯示唯一的顯示時?我不知道該怎麼做.. – Sackling 2012-07-05 20:33:38

+0

然後你可以使用'group_concat'。我編輯了我的答案。 – troelskn 2012-07-05 20:37:45

+0

很酷。不知道這個功能。謝謝! – Sackling 2012-07-06 12:44:14