Commish13 Ответов: 2

Как я могу изменить значение 1 таблицы из другой таблицы в зависимости от значений, которые представляют друг друга в разных типах данных


У меня есть 2 стола

Таблица 1
Команды : Список всех команд
TeamsId  |  TeamName  |  TeamAbv  | TeamLogo   |
--------------------------------------------------
     1     |   Eagles   |   PHI     | eagles.png |
-------------------------------------------------
     2     |   Ravens   |   BAL     | ravens.png |


и т.д. для всех 32 команд


Таблица 2
Расписание : я ввожу идентификатор команды, который представлен в таблице команд
Мой стол рассчитан на 15 недель

ScheduleId  |  Week  | GameHome_1  |  GameAway_1  |GameHome_2  |  GameAway_2  | 
--------------------------------------------------------------------------------
      1       |  Week1 |     3       |      7       |     5      |      1       |
---------------------------------------------------------------------------------
      2       |  Week2 |     11      |      6       |     8      |      4       |


Я пытаюсь написать запрос, который заменил бы TeamId в таблице расписания именем команды из таблицы Teams, а затем отобразил бы его на своем сайте. Но мне нужен такой же формат. Например, мне нужно, чтобы имена столбцов оставались прежними 'GameHome_1' 'GameAway_1' и т. д., Чтобы данные отображались в правильных местах на моем сайте.

Я знаю, что должен показать то, что я пытался, но до сих пор я не приблизился к тому, что мне нужно.
Приведенный ниже код разделяет только домашние и выездные команды, но отображает значения только в 2 столбцах. Мне нужно, чтобы мои колонки оставались такими, какие они есть.

Любая помощь будет оценена по достоинству. Спасибо

Что я уже пробовал:

Выберите пункт Главная.Название команды как HomeTeam, в гостях.Имя команды как AwayTeam
Из графика Щд
Внутреннее соединение сборные дома
На Щд.Команда Хозяев Поля = Домой.TeamsId
Внутренний присоединяйтесь к командам прочь
На Щд.AwayTeam = Прочь.TeamsId

Создает эту таблицу

     | HomeTeam  |  AwayTeam  |
------------------------------
  1  |   Eagles  |   Ravens   |
------------------------------
  2  |    Browns |   Colts    |
------------------------------

etc

Santosh kumar Pithani

Ваш вопрос не ясен пожалуйста покажите ожидаемый результат

2 Ответов

Рейтинг:
8

Richard Deeming

Что-то вроде этого:

SELECT 
    Schd.ScheduleId,
    Schd.Week,
    Home1.TeamName As GameHome_1,
    Away1.TeamName As GameAway_1,
    Home2.TeamName As GameHome_2,
    Away2.TeamName As GameAway_2
FROM 
    Schedule Schd
    LEFT JOIN Teams Home1
    ON Home1.TeamsId = Schd.GameHome_1
    LEFT JOIN Teams Away1
    ON Away1.TeamsId = Schd.GameAway_1
    LEFT JOIN Teams Home2
    ON Home2.TeamsId = Schd.GameHome_2
    LEFT JOIN Teams Away2
    ON Away2.TeamsId = Schd.GameAway_2
ORDER BY
    Schd.Week
;
NB: Если вы гарантированно всегда будете иметь все четыре идентификатора команды, установленные в каждой строке расписания, вы можете использовать INNER JOIN. Если есть хоть какая-то вероятность того, что один или несколько идентификаторов команды будут нет будьте настроены, тогда вам нужно использовать LEFT JOIN.


Maciej Los

5ed!

Рейтинг:
2

W∴ Balboos, GHB

SELECT Home.TeamName AS HomeTeam, Away.TeamName AS AwayTeam
выводит только два столбца - вот что вы получаете.

Мне кажется, что вы должны создать ВИД и используй это [SQL CREATE VIEW[^]. Представление всегда будет отражать состояние Объединенных таблиц по мере их изменения. Вы можете запросить представление точно так же, как вы запросили бы таблицу.

Итак, пользователь ваших объединений создает представление и укажите все столбцы, которые вы хотите видеть.


Maciej Los

5ed!