SQL JOIN显示重复的行

时间:2017-05-19 16:11:09

标签: mysql sql join

我有以下查询

SELECT  DCEB_Aspirantes.folio, 
Nombre,apaterno,amaterno,programa ,
DCEB_Aspirante_has_Eval_Parte1.usuario, eval1,eval2,eval3, eval4 , eval5, 
eval6 , eval7, 
res1,res2,res3, res4 , res5,res6 ,res7

 FROM DCEB_Aspirante_has_Eval_Parte1 
RIGHT JOIN DCEB_Aspirantes ON DCEB_Aspirante_has_Eval_Parte1.id_aspirante = 
DCEB_Aspirantes.id_aspirante  

JOIN
DCEB_Aspirante_has_Eval_Parte2 ON 
DCEB_Aspirante_has_Eval_Parte2.id_aspirante = DCEB_Aspirantes.id_aspirante

在DCEB_Aspirantes表中我有Nombre,apaterno,amaterno,programa

DCEB_Aspirante_has_Eval_Parte1 has eval1, eal2 , eval3 -- eval7
DCEB_Aspirante_has_Eval_Parte2 has res1, res2 ,res3 -- res7

我在DCEB_Aspirantes(用户)中只有一个注册,此用户拥有广告并在其他2列中进行评估。我想要一个像这样的结果

User -  Teacher -   eval1 - eval2 -  eval3 -eval4-  res1 -res2  res3 -res4 -res7

问题是用户有来自3位老师的评价,所以会有3行,我有这个结果,而不是3行,它显示9行(相同行的3倍)?

这是结果 + -------- + -------- + --------- + ------- ------- + ----- + - + ------ + ------ + ------ +

| Folio | Nombre | usuario | eval1 | eval2 | eval7 | res1 | res2 | res7 |

+ -------- + -------- + --------- + ------- + ------- + - ----- + ------ + ------ + ------ +

| 66 | Erick | usu1 | 10 | 9 | 4 | 8 | 8 | 8 |

| 66 | Erick | usu1 | 10 | 9 | 4 | 9 | 9 | 9 |

| 66 | Erick | usu1 | 10 | 9 | 4 | 0 | 0 | 0 |

| 66 | Erick | usu2 | 6 | 6 | 6 | 8 | 8 | 8 |

| 66 | Erick | usu2 | 6 | 6 | 6 | 9 | 9 | 9 |

| 66 | Erick | usu2 | 6 | 6 | 6 | 0 | 0 | 0 |

| 66 | Erick | usu3 | 10 | 10 | 10 | 8 | 8 | 8 |

| 66 | Erick | usu3 | 10 | 10 | 10 | 9 | 9 | 9 |

| 66 | Erick | usu3 | 10 | 10 | 10 | 0 | 0 | 0 |

+ -------- + -------- + --------- + ------- + ------- + - ----- + ------ + ------ + ------ +

1 个答案:

答案 0 :(得分:0)

我不确定这是否能解决问题,但试试这个,我没有看到你的数据库,所以不确定解决方案。

SELECT  A.folio, 
Nombre,apaterno,amaterno,programa ,
P1.usuario, eval1,eval2,eval3, eval4 , eval5, 
eval6 , eval7, 
res1,res2,res3, res4 , res5,res6 ,res7

FROM DCEB_Aspirantes A
LEFT JOIN DCEB_Aspirante_has_Eval_Parte1 P1  ON A.id_aspirante = 
P1.id_aspirante  
LEFT JOIN  DCEB_Aspirante_has_Eval_Parte2 P2 ON A.id_aspirante = 
P2.id_aspirante