php – MySql:’字段列表’中的未知列ID
发布时间:2020-12-13 17:49:51 所属栏目:PHP教程 来源:网络整理
导读:我正在回答这个问题的答案: MySQL: is it possible to group_concat multiple rows? 但是我遇到了MySql错误: #1054 - Unknown column 'CM_Cocktail.id' in 'field list' . 当我删除这个CM_Cocktail.id时,下一个错误表示:#1054 – ‘字段列表’中的未知列
我正在回答这个问题的答案:
MySQL: is it possible to group_concat multiple rows? 但是我遇到了MySql错误:
当我删除这个CM_Cocktail.id时,下一个错误表示:#1054 – ‘字段列表’中的未知列’CM_Zutat.name’.我试图使用别名,但它变得更糟……也许我是盲人. 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,UNIQUE KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 解决方法
您需要在子查询中定义列别名,而不是将别名用作父字段,如下例所示:
SELECT CocktailID,cname,GROUP_CONCAT(ZName SEPARATOR ',') FROM ( SELECT CM_Cocktail.id as CocktailID,CM_Zutat.name as ZName FROM CM_Cocktail,CM_Zutat WHERE CM_Cocktail.id=CM_CocktailHatZutat.cocktail_id AND CM_CocktailHatZutat.zutat_id=CM_Zutat.id ) group_attr GROUP BY CocktailID; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |