查询哪些人选了哪些课:
92年之前是这样查询的:(没有用关联)
select stud.sname,ject.sname from stud,sj,ject where stud.id=sj.studid and ject.id=sj.jectid;
用内关联来:
select stud.sname,ject.sname from stud inner join sj on stud.id=sj.studid inner join ject on ject.id=sj.jectid;
内关联可以这样来看,以中间的sj表为主表,来合另外2个表。
查询哪些人没有选课:
不用关联的写法:
select stud.sname from stud where stud.id not in(select studid from sj);
用左关联的写法:
select stud.sname from stud left join sj on stud.id=sj.studid left join ject on ject.id=sj.jectid where ject.sname is null; /*下面这句也可以查询出*/ select stud.sname from stud left join sj on stud.id=sj.studid left join ject on ject.id=sj.jectid where ject.id is null;
左关联就是把左边的表作为主表,也就是说,stud必须是完整的,可以增加,但不能减少,再按照sj表的关系,来添加ject表的数据。
左关联和右关联实质上是差不多的。认真的看下上面的左关联和右关联就可以看出来了。