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