MySQL查询。从三个表中选择数据

MySQL查询。从三个表中选择数据,sql,mysql,Sql,Mysql,我有三张桌子: 语言 (id,语言名称,已发布) 翻译人员 (身份证、姓名、姓氏、电话、电子邮件、已发布) trans_lang_rel(语言和译者关系。一名译者可以从一种或多种语言进行翻译) id,trans\u id,lang\u id 表格中的数据: 语言 1英语1 2俄文1 3德语1 翻译人员 1名1姓1 999名1。surname1@gmail.com1 2姓名2姓2 888姓名2。surname2@gmail.com一, trans\u lang\u rel 1 2.11.2 3 2

我有三张桌子:

语言 (id,语言名称,已发布)

翻译人员 (身份证、姓名、姓氏、电话、电子邮件、已发布)

trans_lang_rel(语言和译者关系。一名译者可以从一种或多种语言进行翻译)

id,trans\u id,lang\u id

表格中的数据:

语言

1英语1
2俄文1
3德语1

翻译人员

1名1姓1 999名1。surname1@gmail.com1
2姓名2姓2 888姓名2。surname2@gmail.com一,

trans\u lang\u rel

1
2.11.2
3 2 1

所以我必须从这三个表中选择数据

结果应该是这样的:

姓名1 |姓氏1 |英语、俄语| 999 |姓名1。surname1@gmail.com

我尝试过类似的方法,但得到了奇怪的结果:

SELECT t.*, 
GROUP_CONCAT(l.lang_name SEPARATOR ", ") AS language 
FROM translators AS t, 
trans_lang_rel AS tlr 
LEFT JOIN language AS l ON l.id = tlr.lang_id ORDER BY t.id 

感谢您的帮助。

您加入translator and trna_lang_rel的方式不太好。您进行了一次
完全联接
,因为您在子句上只执行了任何

SELECT t.*, 
GROUP_CONCAT(l.lang_name SEPARATOR ", ") AS language 
FROM translators t 
JOIN trans_lang_rel tlr ON t.id = trans_id
LEFT JOIN language AS l ON l.id = tlr.lang_id
ORDER BY t.id 
试试像这样的东西

SELECT  t.name,
        t.surname,
        GROUP_CONCAT(l.lang_name SEPARATOR ", "),
        t.phone,
        t.email
FROM    translators t INNER JOIN
        trans_lang_rel tlr  ON  t.id = tlr. trans_id INNER JOIN
        language l  ON  tlr.lang_id = l.id
GROUP BY    t.name,
            t.surname,
            t.phone,
            t.email
SELECT  t.name,
        t.surname,
        GROUP_CONCAT(l.lang_name SEPARATOR ", "),
        t.phone,
        t.email
FROM    translators t INNER JOIN
        trans_lang_rel tlr  ON  t.id = tlr. trans_id INNER JOIN
        language l  ON  tlr.lang_id = l.id
GROUP BY    t.name,
            t.surname,
            t.phone,
            t.email