[英]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名1.姓1@gmail.com 1
2名稱2姓氏2 888 name2.surname2@gmail.com 1
trans_lang_rel
1 1 1
2 1 2
3 2 1
因此,我必須從這三個表中選擇數據。
結果應該是這樣的:
名稱1 | 姓1 | 英語,俄語| 999 | name1.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
您的幫助將不勝感激。
嘗試類似
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
您加入翻譯器和trna_lang_rel的方式不好。 您full join
因為您從來沒有,只有ON
子句
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
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.