2016-04-21 50 views
0

我一直停留在這幾個小時,現在,任何幫助將不勝感激SQL GROUP_CONCAT聯接多個相對行

我有兩個表「產品」和「product_subcategorys」

「產品」只擁有唯一的ID,其中爲「product_subcategorys」相對多個ID持有的「產品」表

'products' 
id brand 
1 a 
2 b 
3 a 

'product_subcategorys' 
id subcat 
1 u 
1 i 
2 u 
3 u 

這是查詢我有,GROUP BY「p.id」似乎並沒有工作

SELECT GROUP_CONCAT(p.brand) 
FROM products p 
LEFT JOIN product_subcategorys s ON p.id = s.id 
WHERE (
     s.subcategory = "u" 
     OR s.subcategory = "i" 
     ) AS GROUPbrand 

所以我的問題是,我希望它只是從「產品」表,因爲我需要算倍數

我想查詢返回品牌「一個我不能使用不同返回的品牌名單'兩次,但此查詢返回3次,因爲'product_subcategorys'中有兩個匹配的ID

+0

編輯你的問題並添加你想要的結果。並且請注意,您指定的查詢只返回一行,所以我不知道您的意思是「這個查詢是否返回3個結果」。 –

+0

您需要計算倍數。這些應該是多行,還是需要數​​字計數? –

+0

我需要返回行,例如'a,b,a'在我得到'a,a,b'時' – lugreen

回答

1

這是做你想做的嗎?

SELECT GROUP_CONCAT(p.brand ORDER BY p.id) 
FROM products p 
WHERE EXISTS (SELECT 1 
       FROM product_subcategorys s 
       WHERE p.id = s.id AND 
        s.subcategory IN ('u', 'i') 
      ); 
+0

非常感謝!對不起,我花了很長時間來測試它,這是我在整個地方調整過長查詢的一部分。它似乎在做的伎倆,但! – lugreen