2014-11-13 2 views
0

У меня есть следующие 2 таблицы:Заселите таблица со значениями из главной таблицы

*newbatting* *newmaster* 
playerID  playerID 
playerName  playerName 
yearID 
h 
ab 
avgBat 

В таблице «newbatting» имеет несколько строк для одной и той же playerID, но без имени, прикрепленного к нему. Мне нужно иметь возможность заполнять каждую строку соответствующим именем, соответствующим идентификатору игрока. Есть ли шанс, что кто-нибудь сможет объяснить мне, как копирует имя игрока из одной таблицы в другую? Любое объяснение было бы весьма полезно. Благодарю.

ответ

1

Во-первых, вы действительно не должны делать этого , Достаточно соотношение между таблицами по PlayerId. Вы можете использовать join, чтобы получить имя при запросе:

select nb.*, m.playername 
from newbatting nb join 
    newmaster m 
    on nb.playerid = m.playerid; 

Если по какой-то необъяснимой причине, вы действительно хотите иметь эти избыточные данные в newbatting таблице, вы можете сделать что-то подобное:

update newbatting nb join 
     newmaster m 
     on nb.playerid = m.playerid 
    nb.playername = m.playername; 
0

Вы можете сделать это с помощью INSERT и SELECT инструкций.

Было бы как

ÌNSERT INTO table_one (column1) SELECT column2 FROM table_two 

Смотрите reference

0

Вы можете сделать это с UPDATE заявление:

UPDATE newbatting nb, newmaster nm SET nb.playerName = nm.playerName WHERE nb.playerID = nm.playerID 

Это будет относиться к таблице newbatting к столу newmaster через playerID

Для каждого мата h в таблице newmaster приведет к тому, что playerName

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

1

Если вы хотите, чтобы заполнить столбец palyerName, то это то, что вам нужно

UPDATE newbatting AS n 
INNER JOIN newmaster AS m ON m.playerID = n.playerID 
SET n.playerName = m.playerName; 

и если вы хотите получить набор данных

SELECT n.playerID, n.payname FROM newbatting AS n 
INNER JOIN newmaster AS m ON m.playerID = n.playerID 
Смежные вопросы