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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章