Я сейчас пытаюсь заполнить мою таблицу «testMatch» (ниже) данными из моей «сводной» таблицы:
ТАБЛИЦА ИСПЫТАНИЙ
<code>
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| match_id | int(11) | NO | PRI | NULL | |
| match_date | date | YES | | NULL | |
| ground | varchar(50) | YES | MUL | NULL | |
| homeTeam | varchar(100) | YES | MUL | NULL | |
| awayTeam | varchar(100) | YES | MUL | NULL | |
| matchResult | varchar(100) | YES | MUL | NULL | |
| manOfMatch | varchar(30) | YES | | NULL | |
| homeTeam_captain | int(10) | YES | MUL | NULL | |
| homeTeam_keeper | int(10) | YES | MUL | NULL | |
| awayTeam_captain | int(10) | YES | MUL | NULL | |
| awayTeam_keeper | int(10) | YES | MUL | NULL | |
+------------------+--------------+------+-----+---------+-------+
Нет проблем с заполнением match_id -----> manOfMatch - это «homeTeam_captain», «homeTeam_keeper», «awayTeam_captain» и «awayTeam_keeper», которые у меня возникают при вводе.
КРАТКИЙ ОБЗОР
<code>
mysql> DESCRIBE SUMMARY;
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| matchID | int(11) | NO | PRI | NULL | |
| Test | int(11) | YES | | NULL | |
| matchDate | date | YES | | NULL | |
| Ground | varchar(50) | YES | | NULL | |
| HomeTeam | varchar(100) | YES | | NULL | |
| AwayTeam | varchar(100) | YES | | NULL | |
| matchResult | varchar(50) | YES | | NULL | |
| MarginRuns | int(11) | YES | | NULL | |
| MarginWickets | int(11) | YES | | NULL | |
| ManOfMatch | varchar(40) | YES | | NULL | |
| HomeTeamCaptain | varchar(30) | YES | | NULL | |
| HomeTeamKeeper | varchar(30) | YES | | NULL | |
| AwayTeamCaptain | varchar(30) | YES | | NULL | |
| AwayTeamKeeper | varchar(30) | YES | | NULL | |
+-----------------+--------------+------+-----+---------+-------+
Мне нужно как-то выбрать данные из сводки, получить соответствующий player_id и ввести player_id в мой «testMatch». Таблица игроков ниже:
ТАБЛИЦА ИГРОКОВ
<code>
mysql> describe players;
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| player_id | int(11) | NO | PRI | NULL | auto_increment |
| player_surname | varchar(30) | YES | | NULL | |
| team | varchar(100) | YES | MUL | NULL | |
+----------------+--------------+------+-----+---------+----------------+
Так, чтобы уточнить, например. Я хочу выбрать данные homeTeam_captain ИЗ сводной таблицы, НО не имя, а вместо этого соответствующий идентификатор игрока.
Я предполагаю, что мне нужно использовать какие-то соединения / подзапросы, чтобы сделать это ... Я попытался сначала найти правильный запрос выбора, чтобы убедиться, что я извлекаю правильные данные, и я использовал приведенный ниже код для тестирования (спасибо пользователю Larry_Croft за помощь в этом):
<code>
select matchID, player_id, player_surname, team from players p, summary s
where
s.hometeamcaptain = p.player_surname AND s.HomeTeam = p.team ORDER BY matchID;
Но это правильно возвращает 65 строк (65 совпадений), НО я тогда попробовал это с:
<code>
select matchID, player_id, player_surname, team from players p, summary s
where
s.hometeamKEEPER = p.player_surname AND s.HomeTeam = p.team ORDER BY matchID;
Но это возвращает только 61 строку (должно быть 65), поэтому у меня должна быть ошибка в логике.
После того, как этот выбор заработал, мне нужно каким-то образом включить его в мой оператор INSERT INTO ..... SELECT, чтобы поместить все данные в таблицу testMatch.
Надеюсь, это имеет смысл, и спасибо за вашу помощь!