2011-01-19 79 views
0

需要一些幫助與SQLSQL數據庫中選擇問題

的家庭作業

問題

找出誰(名和姓)所發揮的大多數遊戲在國際象棋比賽用ID = 41

背景資料

我有一個叫Games表,其中包含的信息...

  • 遊戲ID
  • 比賽ID
  • START_TIME
  • END_TIME
  • white_pieces_player_id
  • black_pieces_player_id
  • white_result
  • black_result

...,在三個不同的比賽都發生有關的所有單獨的棋牌類遊戲....

(比賽爲41,42 ID和47)

...和第一個和最後玩家名稱存儲在一個表中調用People ....

  • 人ID
  • FIRST_NAME(該表中的「遊戲」爲white_pieces_player_id和 black_pieces_player_id出現相同ID)
  • 姓氏

...如何在SQL中創建一個SELECT語句來給我答案?

+2

什麼是Interactive SQL的? – Beth 2011-01-19 21:28:47

+0

這實際上並不重要 - 它是Sybase Central的一個重要內容......哦,nvm – 2011-01-19 21:32:17

回答

0

我會集結聯接到該表的派生表是這樣的。

然後,如果你只想要最上面的一個,只要選擇TOP 1

1

聽起來像是你需要tournamentID您的where子句限制,與百姓餐桌上一起和white_pieces_player_id black_pieces_player_id,並使用max函數上white_result的數量=贏得工會black_result =勝利。

有趣的問題。 到目前爲止你有什麼?

嗯...響應您的評論

SELECT isik.eesnimi 
FROM partii JOIN isik ON partii.valge=isik.id 
WHERE turniir='41' 
group by isik.eesnimi 
having count(*)>4 

考慮使用max()功能,而不是having count(*)> number

您可以將姓氏添加到select條款,如果你也把它添加到group by子句

sry,我只會說美國話。這段代碼的語言是什麼?所以,你得到這兩個方面爲他們的黑/白玩,然後加入和聚集在該

SELECT a.last_name, a.first_name, CNT(b.gamecount) totalcount 
FROM players a 
JOIN (select cnt(*) gamecount, a.playerid 
     FROM games 
     WHERE a.tournamentid = 47 
     AND (white_player_id = a.playerid OR black_player_id = a.playerid) 
     GROUP BY playerid 
    ) b 
ON b.playerid = a.playerid 
GROUP BY last_name, first_name 
ORDER BY totalcount 

是這樣的:

+0

+1,但他並沒有問及獲勝情況......只是`JOIN`兩個副本的`GAMES`表,就像你在兩欄中所說的那樣,然後'CNT(*)`,你可以很容易地找到誰玩的最多。 – Matthew 2011-01-19 21:53:59