2012-04-18 46 views
-2

我有这些表加入表复杂

Person 
ID_PRS Name 
------ ----- 
1  John 
2  Brian 
3  Mike 

Con_PRS_Fonc 
    ID_PRS ID_FONCT 
    ----- ------- 
    1  17 
    1  18 
    3  17 

    Fonction 
     ID_FONCT LABEL ID_CATEG ID_MET ID_ANA 
     ------- ----- -------- ------ ------ 
     17  Boss  1  56  78 
     18  Junior 1  45  56 

Category 
ID_CATEG LABEL 
-------- ----- 
    1  Cleaning 
    2  Wahsing 

MEtir 
ID_MET LABEL 
------ ----- 
    56  Go 
    45  Come 

Analys 
ID_ANA LABEL 
------ ----- 
    78  Think 
    56  Drink 

我怎样才能得到:

ID_PRS NOM ID_FONCT LABEL_FONCT ID_CATEG LAB_CAT ID_MET LAB_MET ID_AN LAB_ANA 
------ ---- -------- ----------- -------- ------- ------ ------- ----- ------- 
    1 John 17   Boss   1  Cleaning 56  GO  56  Think 

我只知道我可以加入与表Con_PRS_Fonc表的人,但我怎么能与其他参加?

SELECT * FROM PERSON 
LEFT JOIN Con_PRS_Fonc ON PERSON.ID_PRS = Con_PRS_Fonc .ID_PRS 

感谢你在前进, 甜菊

+0

建议:使用在整个模型中唯一的有意义的名称重命名多个“LABEL”属性,例如'Category_label','MEtir_label'和'Analys_label'分别。 – onedaywhen 2012-04-18 13:30:17

+0

...然后你的查询将会非常简单:'SELECT * FROM person NATURAL JOIN Con_PRS_Fonc NATURAL JOIN FONCTION NATURAL JOIN CATEGORY NATURAL JOIN METIr NATURAL JOIN Analys;' – onedaywhen 2012-04-18 13:32:36

回答

0

这应该正是你想要的:

SELECT 
Person.ID_PRS, 
Person.Name, 
Fonction.ID_FONCT, 
Fonction.LABEL AS LABEL_FONCT, 
Fonction.ID_CATEG, 
Category.LABEL AS LAB_CAT, 
MEtir.ID_MET, 
MEtirLABEL AS LAB_MET, 
Analys.ID_ANA, 
Analys.LABEL AS LAB_ANS 
FROM PERSON 
INNER JOIN Con_Prs_Fonc ON Person.ID_PRS = Con_Prs_Fonc.ID_PRS 
INNER JOIN Fonction ON Fonction.ID_FONCT = Con_Prs_Fonc.ID_FONCT 
INNER JOIN Category ON Category.ID_CATEG = Fonction.ID_CATEG 
INNER JOIN MEtir ON MEtir.ID_MET = Fonction.ID_MET 
INNER JOIN Analys ON Analys.ID_ANA = Fonction.ID_ANA 
0

事情是这样的:

SELECT * FROM person as P 
INNER JOIN Con_PRS_Fonc AS CPF ON P.ID_PRS = CPF.ID_PRS 
INNER JOIN FONCTION AS FON ON FON.ID_FONCT = CPF.ID_FONCT 
INNER JOIN CATEGORY AS C ON FON.ID_CATEG = C.ID_CATEG 
INNER JOIN MEtir AS MEt ON Fon.ID_MET = MEt.ID_MET 
INNER JOIN Analys AS ANA ON Fonc.ID_ANA = ANA.ID_ANNA 

我无法证实其100%正确的,但只是参加表格上的关系:)