Mysql

一個表有兩個外鍵指向另一個表中的同一列?

  • September 29, 2021

我需要為 1v1 遊戲創建數據庫結構。

這是我到目前為止所設計的。

在此處輸入圖像描述

現在問題來了:我想在螢幕上顯示比賽的所有數據,但不是外鍵(player_1,player_2),而是顯示你可以在球員表中找到的球員的名字。

我嘗試使用 MySQL 連接將例如 player_1 替換為播放器的實際名稱,如下所示:

SELECT players.name player_1 FROM matches
LEFT JOIN players
ON player_1 = players.id

這很好用,但現在我還需要顯示第二個玩家的名字。我試圖在第一個左連接之後添加第二個左連接,但如果它是同一張表,那將不起作用。

那麼有誰知道如何做到這一點,這個設計是否有效?

您必須加入 2 個players表格副本。

SELECT m.id, p1.name player_1, p2.name player_2 
FROM matches m
JOIN players p1 ON m.player_1 = p1.id
JOIN players p2 ON m.player_2 = p2.id

引用自:https://dba.stackexchange.com/questions/300325