加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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错误:

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

当我删除这个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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读