我有一個如下所示的 MySQL 資料庫架構:
team teams_players players
-- -- ------- --------- --
|id| |id|team_id|player_id| |id|
-- -- ------- --------- --
|1 | |1 | 1| a| |a |
|2 | |2 | 1| b| |b |
-- |3 | 1| c| |c |
|4 | 1| d| |d |
|5 | 1| e| |e |
|6 | 2| a| |f |
|7 | 2| d| |g |
|8 | 2| e| --
|9 | 2| f|
|10| 2| g|
-- ---------- ------
一個球隊可以有很多球員,一個球員可以在很多球隊。
我需要能夠檢查并查看資料庫中是否已經存在一組特定的球員作為一個團隊。如果不是,我想做一些插入來創建它。如果它確實存在,我只需要獲取它的 team_id。
因此,例如,鑒于上面的資料,如果我有一組球員,[a,b,c,d,e] 我需要查看并查看是否已經存在由這些球員組成的球隊(不多也不少)。確實如此,在這種情況下是 team_id: 1 。
如果我有一組玩家,例如 [a,g,f,b,c] 我需要能夠看到這些玩家的這種組合(不多也不少)不存在,所以我會然后能夠將團隊 3 添加到團隊表中,并將這些玩家添加到 teams_players 的行中,并將團隊 3 作為他們的 team_id。
團隊中的玩家人數將始終為 5,他們在團隊中的順序無關緊要。所以 [a,b,c,d,e] 應該被視為與 [e,a,b,d,c] 相同的團隊。
uj5u.com熱心網友回復:
對于您的第一個問題,您可以使用以下查詢來斷言球員[a,b,c,d,e]和其他人在給定球隊中比賽:
SELECT team_id
FROM teams_players
GROUP BY team_id
HAVING COUNT(DISTINCT player_id) = 5 AND
SUM(player_id NOT IN ('a', 'b', 'c', 'd', 'e')) = 0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/449357.html
