簡體   English   中英

兩列引用另一個表中的一個ID

[英]Two columns refer to one id in another table

我一直在嘗試解決以下問題,但我無法解決。

我需要將分數表中顯示的玩家ID與人員表進行匹配,並返回相關人員的姓名。 以下是表格的精簡版,顯示了所需內容的核心部分。

詳細信息將根據燈具ID返回,因此無論任何人的ID都在同一行,我需要獲取其姓名。

人員ID的格式為home_id_1,away_id_1,home_id_2和away_id_2。

人數表
id fname lname
1弗雷德·博格斯
2約翰·布朗
3凱文·史密斯
4詹姆斯·柯克

分數表
燈具ID-home_id_1 away_id_1 home_id_2 away_id_2
1 1 2 3 4

我當前的SELECT語句是:

SELECT scores.fixture_id, scores.match_date, players.fname, players.lname, 
       scores.home_id_1, scores.away_id_1, scores.home_id_2, scores.away_id_2  
    FROM scores, players  
    WHERE fixture_id = 1

輸出應該類似於以下內容:

比賽日期 主場球員1 v 客場球員1, 主場球員2 v 客場球員2
2016/10/01弗雷德·博格斯約翰·布朗凱文·史密斯詹姆斯·柯克

希望這是有道理的,任何幫助將不勝感激。

謝謝,
擔。

嘗試以下操作

SELECT scores.fixture_id, 
       scores.match_date, 
       CONCAT(p1.fname, p1.lname), 
       CONCAT(p2.fname, p2.lname),
       CONCAT(p3.fname, p3.lname),
       CONCAT(p4.fname, p4.lname),    
       s.home_id_1, 
       s.away_id_1, 
       s.home_id_2, 
       s.away_id_2
FROM scores s 
    INNER JOIN players p1 ON s.home_id_1 = p1.id
    INNER JOIN players p2 ON s.away_id_1 = p2.id
    INNER JOIN players p3 ON s.home_id_2 = p3.id
    INNER JOIN players p4 ON s.away_id_2 = p4.id
WHERE s.fixture_id = 1

如果您希望使用空值,則可能需要使用LEFT JOIN

您需要四次加入玩家表,對於要與之匹配的每一列一次。 像這樣:

SELECT 
  scores.fixture_id, 
  scores.match_date, 
  players1.fname + ' ' + players1.lname,
  players2.fname + ' ' + players2.lname,
  players3.fname + ' ' + players3.lname,
  players4.fname + ' ' + players4.lname,
FROM 
  scores, 
  INNER JOIN players players1 ON scores.home_id_1 = players1.id
  INNER JOIN players players2 ON scores.home_id_2 = players2.id
  INNER JOIN players players3 ON scores.away_id_1 = players3.id
  INNER JOIN players players4 ON scores.away_id_2 = players4.id
WHERE
  scores.fixture_id = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM