access 中left join、right join 和inner join 的使用规范

xiaoxiao2021-02-28  106

例如: Select * from Student s Inner Join SC  t On S.id = t.sid Inner Join course c  On c.cid = t.cid Where c.cName = 'C#' 这样在access里是无法通过的,在sqlserver是没点问题的, 因为此处有多个inner jion,所以用括号分隔,这样写就可以通过了: Select * from (Student s Inner Join sc t On S.id = t.sid) Inner Join course c  On c.cid = t.cid Where c.cName = 'C#' ACCESS不能用内连接 inner join access同时INNER   JOIN   3个表是肯定没问题的,出错的原因是执行顺序!前几天我也遇到这个问题,需要加()来确定执行顺序!  select   a.xno,a.score,b.address,c.type   from   ((table1   a   inner   join   table1   b   on   a.xno=b.xno   )inner   join   table3   c   on   b.xx=c.xx)  在access中搜索多个表的时候,免不了要用到连接查询,其中包括左连接,内连接,右连接。现在就说明一下access在连接查询中的语法:     多表查询 a.内连接 select g.sno,s.name,c.coursename from grades g JOIN students s ON g.sno=s.sno JOIN courses c ON    g.cno=c.cno (注意可以引用别名) b.外连接 b1.左连接 select courses.cno,max(coursename),count(sno) from courses LEFT JOIN grades ON courses.cno=grades.cno group by courses.cno 左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。 左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。 b2.右连接 与左连接类似 b3.全连接 select sno,name,major from students FULL JOIN majors ON students.mno=majors.mno 两边表中的内容全部显示 c.自身连接 select c1.cno,c1.coursename,c1.pno,c2.coursename from courses c1,courses c2    where c1.pno=c2.cno 采用别名解决问题。 d.交*连接 select lastname+firstname from lastname CROSS JOIN firstanme 相当于做笛卡儿积 。 需要注意的是:access不支持三个表同时 连接 查询 比如下边的sql语句就存在语法错误:    select * from table1 LEFT JOIN table2 ON table1.field1=table2.field2 LEFT JOIN table3 ON table1.field3=table3.field3    如果想实现多个表之间的连接查询可以让两个作连接查询形成一个视图,然后使用视图和第三个表进行连接查询。 更改以后的sql语句:select * from (select * from table1 left join table2 on table1.field1=table2.field1)   as table1 left join table3 on table1.field1=table3.field1;
转载请注明原文地址: https://www.6miu.com/read-85852.html

最新回复(0)