MSTR如何通过实体实现SQL中的连接查询

 

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,所对两者进行连接查询。

你可能感兴趣的:(mstr)