Я хочу сделать запрос «все в одном» или даже двухэтапный запрос, извлекаемый из 3 таблиц.
Таблица № 1: Игры - эта таблица содержит тип игры, описание игры и т. Д.
Таблица №2: GameProfiles - содержит идентификатор из таблицы «Игры», поэтому у них обоих есть столбец «GamesId». В этой таблице указаны выигранные игры, проигранные игры и т. Д.
Таблица № 3: Games_WhwhatGame - это не конкретная таблица, есть несколько таблиц, например, если у меня есть игра BasketBall, для нее будет отдельная таблица с именем Games_BasketBall, и в ней есть настраиваемые столбцы в зависимости от игра. Например, баскетбол будет иметь столбец для подборов. Эта таблица будет иметь свой собственный идентификатор первичного ключа.
Я могу легко объединить Games и GameProfiles, используя внутреннее объединение в их общем столбце «GameId», но как мне сделать так, чтобы я также мог извлекать «Games_BasketBall» также в том же запросе, динамически в зависимости от GamesId. Возможно, я неправильно это структурирую, поэтому я открыт для предложений. Мне просто кажется, что я не могу придумать действительно плавный способ заставить эту работу работать правильно, потому что в каждой игре будут разные сущности профиля, поэтому я хочу упростить отношения с каждой таблицей, чтобы можно было получать все в одном запросе.
Этот код имеет запрос БЕЗ отношения к Games_Basketball, я хочу иметь возможность вытащить все это в один читатель, чтобы информация была правильной.
using (SqlConnection myConnection = new SqlConnection(myConnectionString))
{
myConnection.Open();
String selectSql = "SELECT * FROM aspnet_GameProfiles INNER JOIN aspnet_Games ON aspnet_GameProfiles.GameId = aspnet_Games.GameId WHERE UserId = @UserId";
SqlCommand myCommand = new SqlCommand(selectSql, myConnection);
myCommand.Parameters.AddWithValue("@GameProfile", UserId);
reader = myCommand.ExecuteReader();
gameTable.DataSource = reader;
gameTable.DataBind();
myConnection.Close();
}