簡體   English   中英

MySQL查詢。 從三個表中選擇數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM