2015-05-29 113 views
0

我有一個名爲physical_exam_tool_and_body_parts表有:我需要什麼樣的查詢?

id physical_exam_tool_id body_part_id 

的body_parts表有:name_tid

的physical_exam_tools表有:name_tid

轉換表的樣子:

id lang text 

我在查詢:

SELECT physical_exam_tool_text, 
     body_part_text 
FROM physical_exam_tool_and_body_parts 
WHERE translation.lang = 'fr' 

我想朗格'fr'的身體部位和身體檢查工具的名稱。我怎樣才能做到這一點。我新來加入。

body_parts和physical_exam_tools表有:

id name_tid 

name_tid是在轉換表中的ID。翻譯表有id lang文本。所以翻譯的主鍵是一個組合鍵(id,lang)。

在physical_exam_body_part_and_tool中,id就是body_parts和physical_exam_tools表的ID(外鍵)。

+0

尋找'Inner Join'。 'select ... from physical_exam_tool_and_body_parts a.id = b.id中的內部連接轉換b其中b.lang ='fr'' –

+0

@Fireblade它比這更復雜一點。 body_part_id只是一個指向body_parts表的鏈接,body_parts表具有name_tid,這是翻譯表的ID。 – jmasterx

+0

你能澄清你的表格結構嗎 – dan08

回答

0

加入到翻譯表兩次lang ='fr'。

SELECT t.[text] AS [ExamTool], t2.[text] AS [BodyPart] 
FROM physical_exam_tool_and_body_parts as p 
    inner join physical_exam_tool as pet 
    on p.physical_exam_tool_id = pet.physical_exam_tool_id 
    and t.lang = 'fr' 
     inner join translation as t 
     on pet.name_tid = t.id 
    inner join body_parts as b 
    on p.body_part_id = b.body_part_id 
     inner join translation as t2 
     on b.name_tid = t2.id 
     and t2.lang = 'fr' 
0

就像這樣。

SELECT PHYSICAL_EXAM_TOOL_TEXT, 
     BODY_PART_TEXT 
FROM PHYSICAL_EXAM_TOOL_AND_BODY_PARTS A 
     INNER JOIN BODY_PARTS B 
       ON A.BODY_PART_ID = B.ID 
     INNER JOIN TRANSLATION C 
       ON C.ID = B.NAME_TID 
WHERE C.LANG = 'FR'