我的数据库中有一些表,三个主表和一个表示多对多关系的表。
1. Student (student_id, student_name)
2. Sport (sport_id, sport_name)
3. Departm (depart_id, depart_name)
4. Sch (sch_id, sch_name)
5. StudSport(relationid, studendid, sportid, departid, schid)
我想做的是例如当我知道id时,根据关系检索部门的名称。我可以得到这样的ID:
SELECT departid, schid from studsport
inner join Student on student_id = studentid
inner join Sport on sport_id = sportid
where student_id = 1 and sport_id=2
但是我想从相应的表格中获取部门和Sch的名称,我不知道该怎么做。
答案 0 :(得分:0)
像这样的东西???
select sch.sch_nam, departm.depart_name,
-- what you have already --
Left outer Join StudSport on Student.student_id = Studsport.studentid and Sport.sport_id = StudSport.sportid
left outer Join Sch on StudSport.schid = Sch.sch_id
left outer join Departm on studsport.depart_id = studsport.departid
这是未经测试的,因为这一点,因此更容易给出答案。
编辑 - 我误读了你的原始查询 - 在downvotes开始下雨之前 - 立即修复它。
你应该使用LEFT OUTER和INNER连接的方式是数据的意思(再次,小提琴通常是有用的),但它只是你想到的几个连接:
select *
from studsport
join student on studsport.studentid = student.student_id
join sport on studsport.sportid = sport.sport_id
left outer Join Sch on StudSport.schid = Sch.sch_id
left outer join Departm on studsport.depart_id = studsport.departid
where student_id = 1 and sport_id=2
答案 1 :(得分:0)
由于您没有从学生或体育中选择任何内容,因此您可以删除相应的内部联接。
SELECT d.depart_name, sch.sch_name FROM StudSport s
INNER JOIN Sch sch ON s.schid = sch.sch_id
INNER JOIN Departm d ON s.departid = d.depart_id
WHERE s.studendid = 1 AND s.sportid = 2