Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何显示mySQL中指向同一表的两个不同列的值?_Mysql - Fatal编程技术网

如何显示mySQL中指向同一表的两个不同列的值?

如何显示mySQL中指向同一表的两个不同列的值?,mysql,Mysql,我有一个足球联赛的“进球”表。 我的表格包含“进球球员”和“进球助攻”,如下所示: Select idgoal, goal_player, goal_assist from myDB.goal LIMIT 3; +--------+-------------+-------------+ | idgoal | goal_player | goal_assist | +--------+-------------+-------------+ | 1 | 14 |

我有一个足球联赛的“进球”表。 我的表格包含“进球球员”和“进球助攻”,如下所示:

Select idgoal, goal_player, goal_assist from myDB.goal LIMIT 3;

+--------+-------------+-------------+
| idgoal | goal_player | goal_assist |
+--------+-------------+-------------+
|      1 |          14 |          15 |
|      2 |          16 |           0 |
|      3 |          17 |          18 |
+--------+-------------+-------------+
goal_player和goal_assist下的ID均指我的“玩家”表中的特定玩家。为了以可编辑的方式呈现我的结果,我必须替换实际名称的ID,因此我正在做:

SELECT idgoal, player.player_nickname as goal_player, goal_assist 
   FROM myDB.goal 
   JOIN player 
   ON goal_player = player.idplayer LIMIT 3;

+--------+-------------+-------------+
| idgoal | goal_player | goal_assist |
+--------+-------------+-------------+
|      1 | Maxi        |          15 |
|      2 | El Loco     |           0 |
|      3 | El Bebe     |          18 |
+--------+-------------+-------------+
我不能同时为目标球员和目标助攻做这件事,因为这意味着同一个球员同时完成目标和助攻,所以我所做的是用第一个连接创建一个视图,然后用第一个视图创建第二个视图,替换“目标助攻”

我的工作很有魅力,直到我不得不对拥有比赛id和22名球员而不是这2名球员的球队做同样的事情


那么,当两列都指向同一个表时,如何用原始表中的值替换ID呢

您正在寻找两个连接。连同别名:

SELECT g.idgoal, p.player_nickname as goal_player,
       pa.player_nickname as assist_player 
FROM myDB.goal g JOIN
     player p
     ON g.goal_player = p.idplayer LET JOIN
     player pa
     ON g.goal_assist = pa.idplayer
LIMIT 3;
注:

  • 所有表格都有别名
  • 所有列引用都是“限定”的,这意味着它们引用列所在的表
  • 你需要两个连接
  • 第二个连接是
    左连接
    ,用于处理目标没有“辅助”球员的情况
您可以尝试以下方法:

SELECT 
    idgoal, 
    (SELECT player_nickname FROM player WHERE player.idplayer = goal_player) as `goal_player_name`,
    (SELECT player_nickname FROM player WHERE player.idplayer = goal_assist) as `goal_assist_name`,
FROM myDB.goal 

请注意,没有订单的限制是相当没有意义的。工作非常完美,现在在大订单上实现它。谢谢