2012-11-06 217 views
1

我目前正在尝试运行一个查询,它将显示所有相互关联的表。我没有制作桌子的设计。所以我在制作时遇到了一些麻烦:目前还不清楚office_hours表与schedule表的关系如何?总体而言,如何正确显示所有通过查询关联的表?查询相关表

SELECT * 
FROM schedule 
INNER JOIN semester ON schedule.semester_id = semester.id 
INNER JOIN office_hours ON office_hours.id = schedule.??? 
+0

看看定义的外键(假设当然认为包括他们的设计师.. ) –

回答

3

我认为ID从表schedule只是一个auto_increment柱并加入scheduleoffice_hoursoffice_hours.schedule_id = schedule.semester_id的正确方法。

select  * 
from  schedule 
      inner join semester 
       on schedule.semester_id = semester.id 
      inner join office_hours 
       on office_hours.schedule_id = schedule.semester_id 

UPDATE 1

select  * 
from  schedule 
      inner join semester 
       on schedule.semester_id = semester.id 
      inner join office_hours 
       on office_hours.schedule_id = schedule.semester_id 
      INNER JOIN faculty 
       ON faculty.id = office_hours.faculty_id 
      INNER JOIN Section 
       ON Section.faculty_ID = faculty.id AND 
        Section.Schedule_ID = Schedule.ID 
      INNER JOIN class 
       ON Class.ID = Section.Class_ID 
      INNER JOIN major_class_br 
       ON major_class_br.class_ID = Class.ID 
      INNER JOIN major_minor 
       ON major_class_br.major_minor_id = major_minor.ID 

假定所有ID联列存在于这就是为什么使用INNER JOIN每个表。否则,请使用LEFT JOIN

+0

我想,'schedule.semester_id'与'semester.id'相关,不是吗? –

+0

是否包含该查询中的“faculty”,“class”,“major_minor”,“major_class_br”表?对不起,我很新 – techAddict82

+1

是的,请稍候,我会更新答案。 –

0

您必须使用id,这是两个表中:

... 
inner join office_hours on office_hours.schedule_id = schedule.id; 
0

Tryu这样的:

SELECT * 
FROM 
SCHEDULE 
INNER JOIN semester 
ON schedule.semester_id = semester.id 
INNER JOIN office_hours 
ON office_hours.schedule_id = schedule.id