Ms-Access
SQL/Access:遍歷查詢的結果以在另一個的 WHERE 子句中使用
只是作為序言,我對一般數據庫非常糟糕(感謝耐心)。
我有一個結構如下的表:
團隊 |人員 |遊戲 |得分 _______|_______|_____|_____| 蘋果 |bob |A |30 蘋果|鮑勃|B |15 蘋果 |克里斯 |A |13 蘋果 |克里斯 |B |2 橘子|莎莉|A |15 橘子|莎莉|B |39 橘子|蒂娜|A |19 橘子|蒂娜|B |27 香蕉|拉里 |A |34 香蕉|拉里|B |30 香蕉|哈利|A |33 巴納薩斯|哈利|B |13 香蕉|查爾斯|A |32 香蕉|查爾斯|B |28
我想生成輸出,顯示誰在每場比賽中得分最高以及他們來自哪支球隊。
例子:
遊戲 |團隊 |人員 |得分 ______|_______|________|_____| 一個 |香蕉|拉里 |34 B |橙子|莎莉 |39
這就是我的目的:
我可以通過以下方式獲取遊戲列表:
SELECT DISTINCT(GAME) from table;
我可以通過以下方式從特定遊戲中獲得最高得分者:
SELECT TOP 1 GAME,TEAM,PERSON,SCORE from table WHERE GAME='A' ORDER BY SCORE DESC;
我在第二個查詢中使用 DISTINCT() 查詢的結果作為 WHERE 子句的一部分時遇到問題的部分。在我的簡單數據庫中數據是動態的。
希望這可以通過一些 SQL 功夫來解決,但是:如果有更好的方法來建構我的數據庫,我絕對願意接受這些建議(現在,它是一個單表數據庫,數據每天被攝取/覆蓋,數據集預計尺寸不會增長到有問題的尺寸,我真的不知道我在做什麼)
謝謝!
您可以使用子查詢來執行此操作,以獲得每場比賽的最高得分,而外部查詢則可以獲取比賽的詳細資訊。僅供參考:這是在 MS SQL 中測試的,而不是 MS-Access(抱歉沒有安裝),但語法應該非常相似。
SELECT t.* FROM tablename AS t JOIN ( SELECT GAME, MAX(SCORE) AS MAXSCORE FROM tablename GROUP BY GAME ) AS MAXGAMES ON ( t.GAME = MAXGAMES.GAME AND t.SCORE = MAXGAMES.MAXSCORE ) ORDER BY t.GAME ;