2016-04-21 49 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