Mysql SQL连接3个表并连接值
我有3个表与n:m关系 语言: ID主键 名称 鼻涕虫 产品: 身份证件 名称 鼻涕虫 -产品组 关系表: Lang_Prod: 由lang_id和prod_id组成的lang_prod_id 朗格 产品标识 现在,我想获得所有具有相应语言名称的产品: 产品 产品组 语言命名多个值 我试过:Mysql SQL连接3个表并连接值,mysql,sql,Mysql,Sql,我有3个表与n:m关系 语言: ID主键 名称 鼻涕虫 产品: 身份证件 名称 鼻涕虫 -产品组 关系表: Lang_Prod: 由lang_id和prod_id组成的lang_prod_id 朗格 产品标识 现在,我想获得所有具有相应语言名称的产品: 产品 产品组 语言命名多个值 我试过: SELECT product.*, languages_products.language_id, GROUP_CONCAT(languages_products.language_id) a
SELECT product.*, languages_products.language_id,
GROUP_CONCAT(languages_products.language_id) as languages
FROM product
INNER JOIN languages_products ON id = languages_products.product_id
GROUP BY product.id;
结果是:
产品名称
成品油段塞
产品组
带语言ID的字符串
我希望有一个带有语言名称的字符串,而不是带有语言ID的字符串
如何存档?您需要添加另一个与语言表的联接,并使用其中的名称列。不过,我会将其分组到一个内部查询中: 选择p.*,选择语言 来自产品p 以语言形式加入选择产品id、组CONCATl.name 来自语言产品有限公司 在lp.language_id=l.id上连接语言l 按产品编号分类cl上的cl.product\U id=p.id
您需要加入语言表
SELECT product.id,product.name,product.productgroup,
GROUP_CONCAT(l.name) as languages
FROM product
INNER JOIN languages_products ON id = languages_products.product_id
INNER JOIN languages l ON languages_products.language_id=l.id
GROUP BY product.id,product.name,product.productgroup
该分组依据无效,应引发错误。您通常按照所选的相同列进行分组,但作为设置函数参数的列除外。这很好,但不是我所需要的,这很好,但不是我所需要的,这是一个矛盾。@jarlh不,不是。它不会引发任何错误,但仍然不是我需要的,也不是我需要的,它会在较新的MySQL版本中引发错误。除非处于兼容模式。