I am following the answer of this question: MySQL: is it possible to group_concat multiple rows?
But I struggle with the MySql error:
#1054 - Unknown column 'CM_Cocktail.id' in 'field list'
.
When I delete this CM_Cocktail.id stuff the next error apperars: #1054 - Unknown column 'CM_Zutat.name' in 'field list'
. I tried to use aliases but it gone worse... Maybe I am blind.
SELECT
CM_Cocktail.id, CM_Cocktail.name,
GROUP_CONCAT(CM_Zutat.name SEPARATOR ', ')
FROM (
SELECT CM_Cocktail.id, CM_Cocktail.name AS cname, CM_Zutat.name
FROM CM_Cocktail, CM_CocktailHatZutat, CM_Zutat
WHERE CM_Cocktail.id=CM_CocktailHatZutat.cocktail_id
AND CM_CocktailHatZutat.zutat_id=CM_Zutat.id
) group_attr
GROUP BY CM_Cocktail.id;
CREATE TABLE IF NOT EXISTS `CM_Cocktail` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
CREATE TABLE IF NOT EXISTS `CM_CocktailHatZutat` (
`cocktail_id` int(3) NOT NULL,
`zutat_id` int(3) NOT NULL,
`zutat_menge` int(4) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `CM_Zutat` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
You need to define column alias in your sub query and than use alias as parent fields as this example:
SELECT
CocktailID, cname,
GROUP_CONCAT(ZName SEPARATOR ', ')
FROM (
SELECT CM_Cocktail.id as CocktailID, CM_Cocktail.name AS cname, CM_Zutat.name as ZName
FROM CM_Cocktail, CM_CocktailHatZutat, CM_Zutat
WHERE CM_Cocktail.id=CM_CocktailHatZutat.cocktail_id
AND CM_CocktailHatZutat.zutat_id=CM_Zutat.id
) group_attr
GROUP BY CocktailID;