2017-08-17 78 views
1

我有以下表結構: enter image description here的MySQL查詢結合表返回重複行

因此,一個產品可以有多個product_type的。

當我在MySQL中進行加入時,每個product_type都會重複記錄product記錄。因此,舉例來說,如果我有產品叫Actifoam,它有2條記錄在products_types表,則查詢的結果將包括Actifoam兩次(每一個具有不同product_type

這裏是我的查詢:

SELECT DISTINCT product.*, product_type.name as product_type_name 
FROM products_types 
JOIN product_type ON product_type.id = products_types.product_type_id 
JOIN product ON product.id = products_types.product_id 

這裏是查詢的結果顯示:

[ 
    0 => [ 
     'id' => 'recccAQHxsb4OEsX6' 
     'name' => 'Actifoam' 
     'product_type_name' => 'Silver Dressing' 
    ] 
    1 => [ 
     'id' => 'recccAQHxsb4OEsX6' 
     'name' => 'Actifoam' 
     'product_type_name' => 'Foam' 
    ] 
] 

我不想product記錄中多次出現這樣的,我想一切都顯得在單行上如果有多個product_types

任何人都有一個想法,我可以做到這一點?

回答

2

DISTINCT只有在2行對於SELECT語句中的所有列具有完全相同的對應值時才返回唯一行。在你的情況下,你需要GROUP BYGROUP_CONCAT

GROUP_CONCAT將返回product_type_name用逗號分隔。

SELECT product.*, GROUP_CONCAT(product_type.name) as product_type_name 
FROM products_types 
JOIN product_type ON product_type.id = products_types.product_type_id 
JOIN product ON product.id = products_types.product_id 
GROUP BY product.id 
+0

這沒有把戲。謝謝! – user3574492