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