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,所對兩者進行連接查詢。