2016-09-18 2 views
0

Я пытаюсь отслеживать данные спортивный стат, у меня есть две таблицы, установленной следующим образом (команды будут меняться в зависимости от недели):MySQL расчесывание Выбор из нескольких таблиц

Таблица 1:

+---------+---------+---------+---------+ 
| Team | PYardG | RYardG | TDG | 
+---------+---------+---------+---------+ 
| Steelers | 250  | 120   | 3 | 
| Broncos | 200  | 130   | 2 | 
+---------+---------+---------+---------+ 

Таблица 2:

+---------+---------+---------+---------+ 
| Week | Team1 | Team2 | Team3 | 
+---------+---------+---------+---------+ 
| Week1 | Steelers | Broncos | Colts | 
| Week2 | Patriots | Giants | Cowboys | 
+---------+---------+---------+---------+ 

В идеале мой результат будет выглядеть следующим образом:

+---------+---------+---------+---------+ 
| Week1 | PYardG | RYardG | TDG | 
+---------+---------+---------+---------+ 
| Steelers | 250 | 120  | 3 | 
| Broncos | 200  | 130  | 2 | 
+---------+---------+---------+---------+ 

Цель в том, чтобы вывести статистику из таблицы 1, командой на основе имени недели и команды в таблице 2.

При этом некоторые исследования, я не могу понять, если подзапрос, JOIN или UNION мой лучший делать ставку. Есть ли способ поиска статистики из Таблицы 1 на основе названия команды и недели в Таблице 2? Я ценю помощь!

EDIT: Приносим извинения за плохо отформатированные таблицы, которые по-прежнему новы. Редактировать 2: Добавлен желаемый результат. Таблица 1 будет меняться в зависимости от недели, у меня есть сценарий, чтобы сохранить статистику за неделю, что я "ищу.

+0

Это неясный, какой вы хотите. Можете ли вы включить фактические данные? –

+0

Ваш ожидаемый результат отличается от 'Table1' только именем первого столбца. Уверены ли вы, что ваши данные верны? –

+0

Да, я подумал, что будет легче иметь таблицу хранения статистики и отдельную таблицу, в которой хранятся команды по неделям, а не одна гигантская таблица, где мне придется все это хранить. – Speight

ответ

0

Использовать UNION, чтобы получить все команды из Table2 в одном столбце подзапроса. Тогда присоединяйтесь, что с Table1.

SELECT t1.team AS Week1, PYardG, RYardG, TDG 
FROM Table1 AS t1 
JOIN (SELECT Team1 AS team FROM Table2 
     WHERE week = 'Week1' 
     UNION 
     SELECT Team2 FROM Table2 
     WHERE week = 'Week1' 
     UNION 
     SELECT Team3 FROM Table2 
     WHERE week = 'Week1') AS t2 
ON t1.team = t2.team 

было бы проще, если вы нормализовали свои данные таким образом, что команды находятся в отдельных строках в Table2, а не нескольких столбцов одного и тот же ряд. Тогда вы могли бы просто присоединиться к таблице вместо того, чтобы поворачивать столбцы в строки подзапроса.

+0

Спасибо! Я сделаю это. – Speight

0

я думаю, что вам нужно изменить структуру таблицы 2. это может быть как

+---------+---------+ 
| Week | Team | 
+---------+---------+ 
| Week1 | Steelers | 
| Week1 | Broncos | 
| Week1 | Colts | 
| Week2 | Patriots | 
+---------+---------+ 

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

, то вы можете использовать простой запрос выбора для извлечения данных.

выбрать t1.Team, t1.PYardG, t1.RYardG, t1.TDG, t2.week из таблицы1 t1, table2 t2 где week = 'week1' и t1.team = t2.team;

 Смежные вопросы

  • Нет связанных вопросов^_^