(請注意:這是我的原始答案的編輯版本,已更正爲刪除我在發佈後發現的錯誤,例如,在三個賭場玩過一臺老虎機的玩家所有的賭場和四個賭場同樣有資格的老虎機,也沒有列出在所有賭場玩過合格的老虎機的玩家,如果他們還玩過至少一個其他合格的老虎機的話。已經在一個擴展的數據集上進行了測試,它只會列出在每個賭場玩過任何特定槽位的玩家至少一次,這也應該更容易理解。)
至於你的第二個問題,我建議以下爲soultion ...
SELECT DISTINCT PlayerNum
FROM (SELECT PlayerNum, SlotNum, Count(*) AS CountSlot
FROM Plays
WHERE SlotNum IN
(SELECT SlotNum
FROM
(SELECT DISTINCT SlotNum, CasinoNum
FROM Plays) SlotCasino
GROUP BY SlotNum
HAVING COUNT(CasinoNum) =
(SELECT COUNT(CasinoNum)
FROM Casino))
GROUP BY PlayerNum, SlotNum) EligiblePlayers
WHERE CountSlot = (SELECT COUNT(CasinoNum)
FROM Casino);
,我隨之而來的是,我應該確定哪些插槽已在所有的賭場被播放和球員們發揮的邏輯所有賭場的插槽。
SELECT DISTINCT SlotNum, CasinoNum
FROM Plays
我然後發現哪些時隙已在每個被播放 -
爲了找出哪些時隙已在所有的賭場被播放我第一分離槽起到和賭場的所有組合在使用播放用賭場的當前號碼 -
SELECT SlotNum
FROM
(SELECT DISTINCT SlotNum, CasinoNum
FROM Plays) SlotCasino
GROUP BY SlotNum
HAVING COUNT(CasinoNum) =
(SELECT COUNT(CasinoNum)
FROM Casino)
然後我發現了哪些球員已經在這些插槽以及有多少賭場使用玩過 -
SELECT PlayerNum, SlotNum, Count(*) AS CountSlot
FROM Plays
WHERE SlotNum IN
(SELECT SlotNum
FROM
(SELECT DISTINCT SlotNum, CasinoNum
FROM Plays) SlotCasino
GROUP BY SlotNum
HAVING COUNT(CasinoNum) =
(SELECT COUNT(CasinoNum)
FROM Casino))
GROUP BY PlayerNum, SlotNum
我精這份名單隻在誰使用了該賭場的都起到了合格的老虎機玩家 -
SELECT DISTINCT PlayerNum
FROM (SELECT PlayerNum, SlotNum, Count(*) AS CountSlot
FROM Plays
WHERE SlotNum IN
(SELECT SlotNum
FROM
(SELECT DISTINCT SlotNum, CasinoNum
FROM Plays) SlotCasino
GROUP BY SlotNum
HAVING COUNT(CasinoNum) =
(SELECT COUNT(CasinoNum)
FROM Casino))
GROUP BY PlayerNum, SlotNum) EligiblePlayers
WHERE CountSlot = (SELECT COUNT(CasinoNum)
FROM Casino);
我希望,我已經充分解釋這一點。如果沒有,或者如果您有任何其他問題,請隨時回覆。
請發表您的完整表架構(定義)。 –
以下是表格,我的歉意! https://gyazo.com/a961956b95e04dde93e7dabbba215dcb – Spichemen
您可以顯示第二個查詢的樣本輸出所需輸出嗎? – Japongskie