Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL连接3个表并连接值_Mysql_Sql - Fatal编程技术网

Mysql SQL连接3个表并连接值

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

我有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) 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版本中引发错误。除非处于兼容模式。