2017-06-22 51 views
0

我無法在作業中爲問題形成關係代數查詢。我必須找到在特定日期贏得比賽的所有球隊的名字。3個表格上的關係代數

數據庫現在有以下三種模式:

Team(teamid,teamname,stadium) 
Player(playerid,name,teamid, height) 
Game (gameid, hometeamid, guestteamid, date, home-score, guest-score) 

我是如何做到這一點,因爲我似乎需要不具有共同的(遊戲和團隊)任何表有點困惑。我看到Game對主隊和客隊都有身份證,但是你怎麼能找出哪支球隊贏了?

我必須回答的確切問題是: 找到所有在6/1/15獲勝的球隊的名字。 (假設一支球隊只發揮一個遊戲中的一天,一個領帶是不可能的)

+0

所有表至少有一個團隊ID,所以有一些共同之處。家庭和客隊的分數應該讓你知道誰贏了。 –

+0

@rd_nielsen我看到他們都有某種形式的球隊ID,但是你如何形成這樣的陳述,告訴你是否應該使用主隊或客隊的ID。對不起,我對此很感興趣。 –

+0

「關係代數」有很多種版本。請給你的參考/鏈接。 PS [從英文描述形成關係代數查詢](https://stackoverflow.com/a/43318188/3404097) – philipxy

回答

1

嘗試這個

(select teamname from Team t, Game g 
     where t.teamid = g.hometeamid 
      and home-score > guest-score and date = '6/1/15') 
UNION 
(select teamname from Team t, Game g 
     where t.teamid = g.guestteamid 
      and guest-score > home-score and date = '6/1/15') 

第一個查詢代表遊戲其中而第二個查詢代表的遊戲,其客人球隊主場球隊贏得贏了。兩者的結合將是所需的答案

+0

謝謝Daniel。這對我有意義。 –