SQL中表连接在MSTR的问题

 

select   distinct a11.id  id,

     a11.contract_desc  contract_desc,

     a12.id  team_id,

     a12.title  title

from contract a11,

     team a12

where    a11.id = a12.contract_id

 

如何通过实体实现两个表之间的连接,如以上SQL语句如何实现。要求Team表和contract表通过team.id=contract.team_id实现关联。

定义实体 team :形式定义表达式有ID和DESC,ID的形式表达式选取team表中的id字段即可,查找表为team。同理定义实体contract。

定义实体 team_contract:在形式定义中要包括两个表达式,一个是team表中的中的team.id字段,另一个是contract表中的contract.team_id字段。查找表定义为team(如果A表连接B表,则A表为查找表,在本例中无影响。)这样team表和contract表根据team.id和contract.team_id通过该实体建立了连接。

新建报表:将实体team、contract、team_contract拖入报表中即可。

值得注意的一点是,不将team_contract放入报表中结果也是一样的。便是如果删除实体team_contract,生成的SQL将产生笛卡尔积。如下:

select   distinct a11.id  id,

     a11.contract_desc  contract_desc,

     a12.id  team_id,

     a12.title  title

from contract a11,

     team a12

思考:

在team_contract实体中建立的两表之间默认的连接。

另外经过尝试如果只有team实体和team_contract实体的话,将只对team进行查找 。如果有contract实体和team_contract实体,则进行了两表的连接。我的想法是因为前者中查找表都team表,所以只对team表进行查询,而后者由于contract实体中的查找表为contract表,而team_contact实体中的查找表为team,所对两者进行连接查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值