从一个表访问数据到另一个表

时间:2019-08-06 11:00:09

标签: sql sql-server tsql

我正在尝试从另一个表访问数据。我正在尝试到达GameName字段,但我真的不知道该怎么做。

我试图创建另一个过程,但这并没有真正解决。

PlayerGamesList.sql

...
SELECT
    t.PlayerId,
    t.GameId,
    t.TeamId,
    t.Position
FROM
    [PlayerOnGame] t

PlayerOnGame.sql

CREATE TABLE [dbo].[PlayerOnGame]
(
    [PlayerOnGameId] BIGINT PRIMARY KEY IDENTITY NOT NULL,
    [PlayerId] BIGINT NOT NULL,
    [GameId] BIGINT NULL,
    [TeamId] BIGINT NOT NULL,
    [Position] NVARCHAR(100) NULL,
...
)

Game.sql

CREATE TABLE [dbo].[Game] 
(
    [GameId] BIGINT PRIMARY KEY IDENTITY NOT NULL,
    [Name]   NVARCHAR(100) NOT NULL,
    ...
)

如何访问此特定的GameId?我是说我该怎么做像GameId.Name这样的东西?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您不想看到游戏ID,而是想看到名称:

public class DatePickerFragment : Android.Support.V4.App.DialogFragment, DatePickerDialog.IOnDateSetListener
{
    // TAG can be any string of your choice.
    public static readonly string TAG = "X:" + typeof(DatePickerFragment).Name.ToUpper();

    // Initialize this value to prevent NullReferenceExceptions.
    Action<DateTime> _dateSelectedHandler = delegate { };

    private static DateTime selectedDate = DateTime.Today;

    public static DatePickerFragment NewInstance(Action<DateTime> onDateSelected)
    {
        DatePickerFragment frag = new DatePickerFragment();
        frag._dateSelectedHandler = onDateSelected;
        return frag;
    }

    public override Dialog OnCreateDialog(Bundle savedInstanceState)
    {
        DateTime currently = selectedDate;

        DatePickerDialog dialog = new DatePickerDialog(Activity,
                                                       this,
                                                       currently.Year,
                                                       currently.Month - 1,
                                                       currently.Day);
        return dialog;
    }

    public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
    {
        // Note: monthOfYear is a value between 0 and 11, not 1 and 12!
        selectedDate = new DateTime(year, monthOfYear + 1, dayOfMonth);
        Log.Debug(TAG, selectedDate.ToLongDateString());
        _dateSelectedHandler(selectedDate);
    }
}

请注意,尽管您已经说过SELECT t.PlayerId, g.Name, t.TeamId, t.Position FROM [PlayerOnGame] t INNER JOIN [Game] g ON g.GameId = t.GameId 可以为空,这意味着某些[PlayerOnGame].[Name]记录没有设置[PlayerOnGame]的可能性。 INNER JOIN将导致这些行从结果中消失。如果要保留它们并显示一个空值,请使其为[GameId]而不是LEFT JOIN