Oracle 自然连接后投影重复 10C

** oracle 10.2.1,PL/SQL**

具体要求: _ 查询学分修满25分的同学姓名和学分详情_

表结构,忽略约束条件

--学生信息表:student_info
create table student_info
(
    stuid      int,                 --学号
    stuname    varchar2(20),            --姓名
    stusex     char(4),                 --性别
    birthday   date default (sysdate),  --出生年月 
    cellphone  int,                 --手机号
    address    varchar2(40),            --家庭地址
        Email      varchar2(20),            --邮箱
        classno    int                  --所属班级
);
commit;

--课程信息表:course_info
create table course_info
(
    cno         varchar2(10),         --课程编号
    cname       varchar2(20),         --课程名称
    cstart      int,                --课程开始学期
    cperiod     int,                  --课时
    ccredits    number(2,1)           --学分
);
commit;

--成绩信息表: score_info
create table score_info
(
    stuid       int,         --学号
    cno         varchar2(10),        --课程编号
    score       int          --成绩
);
commit;
  1. select *
select *
        from (student_info natural join score_info) natural join course_info
        where stuid in (select stuid
                        from score_info natural join course_info
                        group by stuid
                            having sum(ccredits)>=25
                        );

输出,此时并无重复

  1. select stuname,ccredits
select stuname,ccredits
    from (student_info natural join score_info) natural join course_info
        where stuid in (select stuid
                        from score_info natural join course_info
                        group by stuid
                            having sum(ccredits)>=25
                            );

输出,此时出现重复

  1. 当改为下面语句时正常
select stuname,ccredits 
    from ((select *
    from (student_info natural join score_info) natural join course_info
    where stuid in (select stuid
            from score_info natural join course_info
            group by stuid
              having sum(ccredits)>=25
            )

输出,无异常

提问:如何解决 2例 中的重复问题?

0

1个回答

用group by去重,自然连接用的是笛卡尔集

0
C_J_U_L_Good
Max_inner 回复caozhy: 笛卡尔积不可以再投影吗?
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
数据库的自然连接, 投影,连接
选择(Selection) 选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。 选择运算的记号为 σF(R)。 其中σ是选择运算符,下标F是一个条件表达式,R是被操作的表。 投影(Projection)  投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为:ΠA(R)。 其中A是属性名(即列名)表,R是表名
数据库中的自然连接、选择、投影
选择(Selection) 选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。 选择运算的记号为 σF(R)。 其中σ是选择运算符,下标F是一个条件表达式,R是被操作的表。 投影(Projection) 投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为:ΠA(R)。 其中A是属性名(即列名)表,R是表名。 连接(JOI...
Oracle左右全等连接(自然连接)
select * from  mytable;----基本表 select * from  myusertest;----基本表 ---Oracle 左连接 以左边表为主表,即右边的表数据可以为空,但左边的表数据记录全部显示出来 select t1.*,t2.pro_name,t2.score from mytable t1,myusertest t2 w
Oracle - 【连接2】自然连接+左外连接+右外连接
=>【连接1】广义笛卡儿积+一般连接+自连接 自然连接(Natural Join) select * FROM COURSE NATURAL JOIN SCORE; Result(取相同字段并混合该相同字段): >>> 自然连接后只能得到一条数据:小明 2019001 左外连接(LEFT OUTER JOIN) =&gt...
自然连接如何取出重复属性?
首先创建两个表rncreate table Student([color=#FF0000]Sno[/color] int primary key,Sname varchar(15) not null,Ssex varchar(2)not null)rncreate table Sc (Cno int ,Cname varchar(15) not null,[color=#FF0000]Sno [/color]int not null,score int not null)rn 两个表中都有Sno字段,如果我想下面这样连接,Sno在结果中会占据两列rnselect * from student join sc on s.sno=c.snornrn如果指定字段名自然没有问题,我这里用的是select * ,现在该怎么取出重复列呢?
自然连接
rnSQL> create table book1 as select * from book;rnrn表已创建。rnrnSQL> select * from book;rnrnBOOKID BOOKNAME EDITOR PRICE PUBLISH PUBDATE QTYrn-------------------- -------------------- ---------- ---------- ------------------------------ -----rntp2001--001 数据结构 李国庆 24 清华大学出版社 08-1月 -01 20rntp2003--002 数据结构 刘娇丽 21 中国水利水电出版社 15-10月-03 50rntp2002--001 高等数学 刘自强 13 中国水利水电出版社 08-1月 -02 60rntp2003--001 数据库系统 汪洋 15 人民邮电出版社 18-5月 -03 26rntp2004--005 数据库原理与应用 刘淳 26 中国水利水电出版社 25-7月 -04 99rnrnrn已选择6行。rnrnSQL> select x.bookid,y.bookid from book x natural join book1 y;rnselect x.bookid,y.bookid from book x natural join book1 yrn *rn第 1 行出现错误:rnORA-25155: NATURAL 联接中使用的列不能有限定词rnrnrn这是什么情况
oracle 内连接、外连接、自然连接、交叉连接练习
oracle 内连接、外连接、自然连接、交叉连接练习 --查询员工信息 select * from emp; --查询部门信息 select * from dept; --需求:查询员工姓名、薪资和所在部门名称、部门编号 --1.使用交叉连接(笛卡尔积)14条记录 select ename,sal,dname,dept.deptno from emp,dept where emp.deptno...
Oracle中的联合查询-自然连接/外连接/内连接
自然连接 select * from r1 natural [inner] join r2 natural [inner] join r3 where P; select A1,A2 from r1 natural[inner]join r2,r3where r2.A=r3.B; 自然连接中,匹配关系(relation,表)中属性(at...
Oracle中的自然连接、外连接、查询方式
自然连接 连接原则:两个表包含相同的列名,并且具有相同的列值(共有列) 同名列作为搜寻条件时,即强制添加条件——where t1.column=t1.column 无同名列时相当于笛卡尔积 注意:不能为共有列指定限定词,即该列名不能标识为a表或b表中的列,(不是它们特有) ...
自然连接和相等连接区别
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且去掉重复的属性列。 等值连接要写表.字段名=表.字段名,并且要查询的字段如有相同的要写明是属于哪个表的字段。自然连接不许有表明.字段名,表natural join另一表。假设表A(id,name)表B(name) select id,A.name from A,B where A.name=B.name这个查询
θ连接、自然连接、更名操作
θ(theta)连接:情景:你有两张表①学生(学号,姓名,性别,班级,年级);②成绩(学号,算法成绩,C++成绩)你需要得到一个姓名+算法成绩的表,那么就需要连接操作数学描述:文字描述:关系R和关系S的笛卡尔积中,满足AθB条件的所有元组(A∈R,B∈S且具有可比性)(DBMS可以直接进行连接操作,而不用先求笛卡尔积)更名操作:θ连接操作会遇到特殊情况:自己和自己连接这个时候为了避免重名,需要进行...
mysql学习十一之自然连接,内自然连接,左外自然连接,右外自然连接,两道面试题
一、什么是自然连接 通过mysql自己判断完成连接过程,不需要指定连接条件,mysql会根据多个表内的相同字段作为连接条件。 二、自然连接的分类 自然连接分为两种:内自然连接(natural join)和外自然连接,其中外自然连接又分为左外自然连接(natural left join)和右外自然连接(rnatural right join)。注意:自然连接没有判断语句。 三、自然连接的语法...
自然连接和等值连接
1、自然连接(Naturaljoin)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。 2、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。 3、自然连接与等值连接 在连接运算当中,一种最常用的连接是自然...
自然连接(NATURAL JOIN)
自然连接(NATURAL JOIN)是一种特殊的等值连接,将表中具有相同名称的列自动进行匹配。 1.自然连接不必指定任何连接条件。 SQL> desc emp  Name               Null?    Type  ----------------- -------- ------------------  EMPNO              NOT NULL NUMBE
Mysql之自然连接
两张表: 自然连接 通过MySql自己的判断完成连接过程,不需要指定连接条件。MySql会使用表内的,相同的字段,作为连接条件。 自然连接分为内外之分。 内:natural join 外:左外natural left join、右外natural right join 注:select * from one natural join two; sele
自然连接和等值连接的区别
自然连接一定是等值连接,反之刚不成立。 那么自然连接较等值连接有什么特点: 1.自然连接中必须有相同的属性名的分量,用相同的属性名的分量进行等值连接。 2.自然连接要把比较的属性去掉。也就是去掉相同的属性。
关于数据库自然连接
[img=http://p.blog.csdn.net/images/p_blog_csdn_net/maber/333230/t_R.jpg][/img]rn[img=http://p.blog.csdn.net/images/p_blog_csdn_net/maber/333230/t_S.jpg][/img]rn求关系R与关系S的自然连接。rn结果如下:rn[img=http://p.blog.csdn.net/images/p_blog_csdn_net/maber/333230/t_RS.jpg][/img]rn 出自《程序员教程(第2版)》 --清华大学出版社 117页 例3-8rnrnrn我想问下这个怎么来的?我计算不出来。
等值连接和自然连接的区别
自然连接:去掉重复属性(值),如:S:A B C , R: B C D 自然连接之后变成: A B C 等值连接:要根据相同的属性,合并成R.B S.B 的形式即可
关于自然连接
最近在学数据库,逃课的人伤不起啊,只能自己啃书别。废话不多说,开始正题吧。自然连接的定义自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。自然连接自动判断相同名称的列,而后形成匹配。缺点是,虽然可以指定查询结果包括哪些列,但不能人为地指定哪些列被匹配。另外,自然连接的一个特点是
自然连接,等值连接
第一 自然连接介绍   自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。 第二 自然连接的功能   自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。 编辑本段自然连接与
数据库自然连接
R表 S表A B C D B E1 a 3 2 c 72 b 6 3 d 53 c 7 1 a 3 自然连接怎么连接? R表 S表A B C D B E1 a 3 2 c 72 b 6 3 d 53 c 7 ...
R和S的自然连接
-
等值连接和自然连接
1.首先 元组:关系中的行 属性:关系中的列 关系运算: R(A,B,C,D) 、S(B,C,Y,Z)为两个关系; 选择[取得关系R中符合条件的元组]、 投影[取得关系R中某几个属性列组成新的关系]、 连接[RxS的笛卡尔积中选取属性间满足条件的元组]   等值连接:关系R、S,取两者笛卡尔积中属性值相等的元组,比如 R.A=S.B
内连接和自然连接
内连接和等值连接是一样的! 自然连接展示俩个表中字段相同而且数据类型一样的.内连接(inner join):select * from db_stu s inner join db_class c on s.cid = c.cid; 或者是: select * from db_stu s,db_class c where s.cid=c.cid;自然连接(natural join)
关系数据库---自然连接
首先来看自然连接的定义: 自然连接:是一种特殊的等值连接,它要求两个关系进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。一个简单的例子,将下列关系R和S进行自然连接:R: A B C a b c b a d c d e d f gS: A C D a c d d
笛卡尔积,自然连接,外连接
笛卡尔积:又称直积: 我自己的理解: 表示A ,B两集合各抽出一个元素,遵循A中元素在前,B中元素在后的,所有可能的集合 A={a, c},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (c, 0), (c, 1), (c, 2)} 自然连接: 关系A,B各包含一定的属性; 自然连接的结果:将属性求或操作保留,将公共
线性表简单自然连接
本程序可实现任意两个线性表的简单自然连接,根据所根据的连接条件进行连接。
自然连接(natural join)
自然连接:自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。来看一下自然连接的例子。Select emp.ename,dept.dnameFrom emp natural join dept;这里我们并没有指定连接的条件,实际上oracle为我们自作主张的将,emp中的deptno和dept中的deptno做了连接。也就是实际上相当于Se...
详解数据库的自然连接
首先来看自然连接的定义: 自然连接:是一种特殊的等值连接,它要求两个关系进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。 一个简单的例子,将下列关系R和S进行自然连接: R: A B C a b c b a d c d e d f g S: A C D a c d d f g b d g 首先要对两个关系中相同属性组的分量进行比较,即比较R.A,R.C和S.A,S.C。 显然在R中只有第一行和第二
sql 自然连接
同名属性组的分量进行比较,一样的提取出来
自然连接与等值连接的区别
自然连接与等值连接的区别 什么是连接? 就是把A表的一条记录与B表的一条记录拼成一条记录 什么是等值连接 根据表A和表B相同的值进行连接,相同的值并不一定在相同的字段 什么是自然连接 在等值连接的基础上,要求相同的值其所属的字段名也相同 ...
oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)
1.简述  1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的。用来连接两张表的表达式组成了连接条件。当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结果集   2) 有5种基本类型的的连接,inner,outer,natural,cross连接,自连接。   2.说明与例子 1)内连接 (inner join
EPSON 无线网卡投影连接
EPSON 无线网卡投影连接,无线自动连接
数据库——连接(自然连接、外连接、内连接)
1、自然连接:只考虑那些在两个关系模式中都出现的属性上取值相同的元组对 natural join、join...using select A1,A2,...,An from r1 natural join r2 natural join ... natural join rn where P; select name1, course_id from instructor, teaches...
mysql自然连接、内连接、外连接
1.内连接 table_1的表数据 table_2的表数据 链接例句:select table_1.* ,table_2.* from table_1 inner join table_2 on table_1.id=table_2.id; 2.外连接:(做链接left join on、有链接right join on) 左链接:select table_1.*,tabl
等值连接与自然连接的区别和联系
区别:等值连接不要求两个关系中进行比较的分量是相同的属性组,而只要可以进行相 等比较即可,是从行进行的一种运算。而自然连接要求两个关系中进行比较的分量必须是相 同的属性组,并且在结果中把重复的属性列去掉,是从行和列进行的一种运算。 联系:等值连接是关系的广义笛卡尔积的子集。自然连接是一种特殊的等值连接。即两 者都是两个关系连接之后的产物。
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo