Для каждой ссылки внешнего ключа, существующей в таблице; Для получения связанных данных необходимо выполнить отдельное соединение с основной / базовой таблицей.
В вашем случае; снова добавьте игроков в свой запрос и присоедините его к Goals.player_assist; присоединяя игроков к Goals.Player_Score.
Почему: одно и то же соединение не может получить обе части данных, так как они представляют разные отношения к таблице игроков.
в SQL это будет выглядеть так:
SELECT G.*
, PS.id_Player as ScoredByID_Player
, PS.first_name as ScoredByfName
, PS.last_name as ScoredBylName
, PA.id_Player as AssistedByID_Player
, PA.First_name as AssistedByfName
, PA.Last_name as AssistedBylName
FROM GOALS G
INNER JOIN Players PS
on G.id_Player = PS.Player_Score
LEFT JOIN Players PA
on G.id_Player = PA.Player_Assist
Обратите внимание, что мы используем псевдонимы полей игроков, чтобы мы знали, за кого они играют, а с помощью чего. Мы также используем псевдонимы таблиц для удобочитаемости и потому, что нам нужно копировать «Players» и механизм, чтобы отслеживать, какую таблицу мы имеем в виду; нам нужно, чтобы они были названы по-другому.
Причина, по которой я ЛЕВАЯ присоединяюсь (внешняя) во второй раз, заключается в том, что не все оценки имеют помощь; но у всех есть кто-то, кто их забил. Таким образом, первое объединение с игроками может быть внутренним объединением, но второе объединение может не иметь помощи; и мы все еще можем хотеть видеть детали для всех поставленных целей. Если бы мы заставили 2-го присоединиться к внутреннему, мы потеряли бы все результаты, если помощь не была задействована.