三张表,sx(学号,姓名),sy(学号,年龄),sw(学号,所在系),学号是主键,sx有100条记录,sy有30条记录,sw有50条记录。问题一:用左连接把三张表合并成一张表student(学号,姓名,年龄,所在系)的sql怎么写(要求student表最终的记录数为100)?有没有其他的更好的合并三张表(或者更多表)的方法?问题二:用三张表创建一张视图view_student(学号,姓名,年龄,所在系)的sql怎么写(view_student记录数最终为100)?左连接?其他方法?
调试欢乐多
from sx x left join sy y on x.学号=y.学号
left join sw w on x.学号=w.学号;
create or replace view view_student as
select x.学号,x.姓名,y.年龄,w.所在系
from sx x left join sy y on x.学号=y.学号
left join sw w on x.学号=w.学号;
--合并成一张新表
create table student as
select sx.sno, sx.name, sy.age, sw.series
from sx, sy, sw
where sx.sno = sy.sno(+)
and sx.sno = sy.sno(+)
and sx.sno = sw.sno(+);
--创建一张视图
create or replace view v_student as
select sx.sno, sx.name, sy.age, sw.series
from sx, sy, sw
where sx.sno = sy.sno(+)
and sx.sno = sy.sno(+)
and sx.sno = sw.sno(+);
2,union和max
select 学号,max(姓名) 姓名,max(年龄) 年龄,max(所在系) 所在系
from
(
select 学号,姓名,null 年龄, null 所在系 from sx
union all
select 学号,null 姓名,年龄, null 所在系 from sy
union all
select 学号,null 姓名,null 年龄, 所在系 from sw
) t
group by 学号问题二:用三张表创建一张视图view_student(学号,姓名,年龄,所在系)的sql怎么写(view_student记录数最终为100)?左连接?其他方法? 同上。