MySql: unknown column id in field list

I follow the answer to this question: MySQL: is it possible for group_concat multiple lines?

But I am struggling with the MySql error:

#1054 - Unknown column 'CM_Cocktail.id' in 'field list'.

When I remove this material CM_Cocktail.id, apperars following error: #1054 - Unknown column 'CM_Zutat.name' in 'field list'. I tried to use pseudonyms, but it got worse ... Maybe I'm 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;
Run codeHide result

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 ;
Run codeHide result

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;
Run codeHide result

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 ;
Run codeHide result
+4
source share
2 answers

You need to define the column alias in your optional query and use the alias as parent fields as an 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;
+6
source

Plz try this

SELECT 
id, 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 id;

because you are using a subquery

+1
source

Source: https://habr.com/ru/post/1629536/


All Articles