[英]How to convert multiple column foreign keys in the same way
我有一個表relationship
:
+-----------+-----------+--------------+
| playerid1 | playerid2 | relationship |
+-----------+-----------+--------------+
| 1 | 3 | friend |
| 1 | 2 | enemy |
+-----------+-----------+--------------+
和另一個桌上player
:
+----+--------+
| id | name |
+----+--------+
| 1 | Hattie |
| 2 | Jazz |
| 3 | Ben |
+----+--------+
我想返回所有像'Hattie', 'Jazz'
這樣的敵人
我擁有的最好的是:
select
player1.name,
player2.name
from
(
select
player.name
from
player,
relationship r
where
r.relationship = 'enemy'
and player.id = r.playerid1
) player1,
(
select
player.name
from
relationship r,
player
where
r.relationship = 'enemy'
and player.id = r.playerid2
) player2;
這是這么長。 每個玩家都有邏輯重復。
有沒有辦法讓它更短?
我當然可以select playerid1, playerid2 from relationship where relationship = 'enemy';
在兩列中獲取 id,所以我真的懷疑必須有比我在上面手動創建的更優雅的列式外鍵引用查找。
你可以加入玩家表兩次
SELECT
p1.name,p2.name
FROM
relationship rl JOIN player p1 ON r.playerid1 = p1.id
JOIN player p2 ON r.playerid2 = p2.id
WHERE r.relationship = 'enemy'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.