我如何使用GROUP_CONCAT并获得多个结果与联接

我如何使用GROUP_CONCAT并获得多个结果与联接

问题描述:

我使用这个MySQL查询拉回来一个结果,然后从连接结果联接:我如何使用GROUP_CONCAT并获得多个结果与联接

SELECT card_name, GROUP_CONCAT(DISTINCT cat_name SEPARATOR ',') AS catcsv 
FROM `cards` 
LEFT JOIN card2cat ON cards.cards_id = card2cat.card2cat_card 
LEFT JOIN cats ON card2cat.card2cat_cat = cats.cats_id 
WHERE `card_id` = 1 

这将返回:

card_name catcsv 
----------------------------- 
Violets  Floral, Occasion 

这是完美的我需要什么......不过,我需要得到相同的结果,但对于多个结果,像这样:

SELECT card_name, GROUP_CONCAT(DISTINCT cat_name SEPARATOR ',') AS catcsv 
FROM `cards` 
LEFT JOIN card2cat ON cards.cards_id = card2cat.card2cat_card 
LEFT JOIN cats ON card2cat.card2cat_cat = cats.cats_id 
LIMIT 0, 10 

..但返回此:

card_name catcsv 
----------------------------- 
Violets  Floral, Occasion, Birthday, Down at the Farm, Cats and Dogs, Down at the Yard, Humour, Beach, Coast and Harbour, Gardening 

即所有可能的猫:(我已经试过删除几个不同的,它更糟糕,并返回每个类别多次!

我上面使用的结构/名称被简化为张贴,所以在这里粘贴一个数据库结构转储并不太实际,我希望我已经解释得很好了!

你只是缺少GROUP BY条款:

SELECT card_name, GROUP_CONCAT(DISTINCT cat_name SEPARATOR ',') AS catcsv 
FROM `cards` 
LEFT JOIN card2cat ON cards.cards_id = card2cat.card2cat_card 
LEFT JOIN cats ON card2cat.card2cat_cat = cats.cats_id 
GROUP BY card_name 
LIMIT 0, 10 
+0

你DUDE!完善。我无法理解为什么这样有效,因为它看起来像是已经由catcsv分组了,但它确实如此。好男人先生! – 2012-02-16 14:39:04