2010-12-15 28 views
0

からのデータを選択して、私は3つのテーブルがあります。MySQLクエリ。 3つのテーブル

言語 (ID、LANG_NAME、公表)

翻訳者 (ID、名前、姓、電話、電子メール、公表)

trans_lang_rel(翻訳者は1つ以上の言語から翻訳できます)

ドイツ1

言語

1英語1
2ロシア

翻訳者

を1
3:

ID、TRANS_IDは、テーブル内の

データにLANG_ID

1名1 Surname1 999 [email protected] 1
2 Name2はSurname2 888 [email protected] 1

trans_lang_rel

この3つのテーブルからデータを選択する必要があります。

結果は次のようになります。

名前1 | Surname1 |英語、ロシア語| 999 | [email protected]

私はこのような何かを試してみたが、私は奇妙な結果だ:

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

試してみてください何か

よう
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 
0

翻訳者と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 
0
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 
関連する問題