1、创建测试表,
create table test_task(taskID varchar2(20),taskName varchar2(200))
create table test_person(personID varchar2(20),personName varchar2(200))
create table test_task_person(taskID varchar2(20),personID varchar2(200))
2、插入测试数据;
insert into test_task values (101,'Task_101')
insert into test_task values (102,'Task_102')
insert into test_task values (103,'Task_103')
insert into test_person values (1001,'Person_1001')
insert into test_person values (1002,'Person_1002')
insert into test_person values (1003,'Person_1003')
insert into test_task_person values (101,1001)
insert into test_task_person values (101,1002)
insert into test_task_person values (102,1001)
insert into test_task_person values (102,1003)
insert into test_task_person values (103,1001)
insert into test_task_person values (103,1003)
commit
3、查询1,查询每个任务对应的担当者;select t.*, b.personName from test_task_person t, test_person b where t.personID = b.personID
4、查询2,查询每个人承担的任务;select t.*, b.taskName from test_task_person t, test_task b where t.taskID = b.taskID
1、语句如下:
Select project.*, [contract].* from project
Left join contract_project on project.projectId = contract_project.projectId
Left join [contract] on contract_project.contractId = [contract].contractId
注:contract在Sql server中是关键字,因此使用了中括号。
2、使用Left join
Left join是以左表为准的。换句话说,左表(project)的记录将会全部表示出来,而右表(contract_project)只会显示符合搜索条件的记录
(例子中为: project.projectId = contract_project.projectId)。对于contract表来说,contract_project表是它的左表。
此例以两个left join 将三个表按条件联接在一起。
扩展资料
连接通常可以在select语句的from子句或where子句中建立,其语法格式为:
select colunm_name1,colunm_name2
from table_name1
left join table_name2
on table_name1.colunmname=table_name2.colunmname其中join_table指出参与连接 *** 作的表名,连接可以对同一个表 *** 作,也可以对多表 *** 作,对同一个表 *** 作的连接称为自连接, join_type 为连接类型,可以是left join 或者right join 或者inner join 。
on (join_condition)用来指连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。
参考资料:百度百科 left join
多对多:新建一个关系表,将两张表关系起来。关系表中是两张表的主键。
如:有多个学生,每个学生可以选修多门课程,每个课程可以被多个学生选修。
注意:多对多中,不能说在一个表中加个字段,cid是另一张表的主键,不能写两个数据。
扩展资料
一个好的表结构设计,可以减少一些不必要的表或字段等。数据表之间的关联关系分为三种:一对一、一对多、多对多。
1、一对一,是将数据表“垂直切分”,就是A表的一条记录对应B表的一条记录。
优点:
(1)便于管理、可提高一定的查询速度。
(2)减轻CPU的IO读写,提高存取效率。
(3)符合数据库设计的三大范式。
(4)符合关系性数据库的特性。
缺点:增加一定的复杂程度,程序中的读写难度加大。
2、一对多,就是A表的一条记录,对应B表的多条记录,且A的主键作为B表的外键。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)