MySQL返回同名表的同名连接

时间:2012-04-19 14:41:04

标签: mysql sql inner-join

我正在使用mysql。

我有两张桌子

Students:
stud_num 
prof1
prof2

Prof
prof_id
first_name
last_name

教授ID是学生表中的外键。

我希望将stud_num和prof1作为名字和姓氏,将prof2作为名字和姓氏

这是我的查询不起作用:

select s.stud_num, CONCAT(p.first_name, " ", p.last_name) as PROF1, CONCAT(p.first_name, " ", p.last_name) as PROF2
from students s
inner join prof p
on s.prof1 = p.prof
and s.prof2 = p.prof

这不起作用。有一个简单的方法吗???

3 个答案:

答案 0 :(得分:3)

将TWICE加入教授表,但如果没有提供教授的ID,我会建议LEFT加入

select 
      s.stud_num, 
      CONCAT(p1.first_name, " ", p1.last_name) as PROF1, 
      CONCAT(p2.first_name, " ", p2.last_name) as PROF2
   from 
      students s
         LEFT join prof p1
            on s.prof1 = p1.prof
         LEFT join prof p2
            on s.prof2 = p2.prof

答案 1 :(得分:3)

Prof表需要以两个不同的名称连接两次。 试试这个:

select s.stud_num,
       CONCAT(p1.first_name, " ", p1.last_name) as PROF1,
       CONCAT(p2.first_name, " ", p2.last_name) as PROF2
from   students s,
       prof p1,
       prof p2
where  s.prof1 = p1.prof_id
and    s.prof2 = p2.prof_id

答案 2 :(得分:1)

请尝试以下方法:

SELECT s.stud_num, 
       CONCAT(p1.first_name, " ", p1.last_name) as PROF1, 
       CONCAT(p2.first_name, " ", p2.last_name) as PROF2
FROM students s, prof p1, prof p2
WHERE s.prof1 = p1.prof
      AND s.prof2 = p2.prof