MySQL query. Select data from three tables
我有三个表:
语言
(id,lang_name,已发布)
翻译员
(ID,姓名,姓氏,电话,电子邮件,已发布)
trans_lang_rel(语言与翻译者的关系。一位翻译者可以翻译一种或多种语言)
id,trans_id,lang_id
表中的数据:
语言
1英语1
2俄文1
3德语1
翻译器
1名称1姓氏1 999名称[email protected] 1
2 Name2姓氏2 888 [email protected] 1
trans_lang_rel
1 1 1
2 1 2
3 2 1
所以我必须从这三个表中选择数据。
结果应如下所示:
名称1 |姓1 |英语,俄语| 999 | [email protected]
我已经尝试过类似的操作,但结果却很奇怪:
1 2 3 4 5 | 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 |
我们将不胜感激。
尝试类似
的方法
1 2 3 4 5 6 7 8 9 10 11 12 | 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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SELECT translators.name, translators.surname, GROUP_CONCAT(LANGUAGE.name SEPARATOR",") AS LANGUAGE, translators.phone, translators.email FROM translators LEFT OUTER JOIN trans_lang_rel ON trans_lang_rel.trans_id = translators.id LEFT OUTER JOIN LANGUAGE ON trans_lang_rel.lang_id = LANGUAGE.id |
您加入翻译和trna_lang_rel的方式不好。您之所以创建了
1 2 3 4 5 6 | 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 |