Как проанализировать данные из таблицы MySQL в другую таблицу с помощью скрипта Mysql

#mysql #database

#mysql #База данных

Вопрос:

У меня есть таблица: Country (идентификатор int, имя varchar (100), спортивный varchar (300))

 ------------------------------------
id   |  name  |  Sports
------------------------------------
1    | USA    | {Football}{Basket}
2    | Canada | {Swimming}
..   | ...    | ...
------------------------------------
  

Для того, чтобы нормализовать таблицу country, мне нужен скрипт MySQL, который будет перебирать каждую строку в таблице country, а затем извлекать sport в новую таблицу Sport (id, sportName). вот так:

 ---------------------------------
id  |  sport
---------------------------------
1          | Football
2          | Basket
3          | Swimming
..         | .....
-----------------------------------
  

и, наконец, мне нужно создать таблицу Country_Sports, чтобы сохранить каждую страну, например :
Country_Sports (country_id, sport_id).**

 -----------------------------
country_id   | sport_id
-----------------------------
1            | 2
1            | 3
3            | 1 
-------------------------
  

Я создал функцию для разделения «{«»}»», но этого все равно недостаточно, потому что я не знаю, как использовать ее для извлечения всех видов спорта для каждой страны.

 CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
CHAR_LENGTH(SUBSTRING_INDEX(x, delim, pos -1))   1),
delim, '');
  

пример :

  SPLIT_STR(Sports, '{', 2)
  

Комментарии:

1. Где проходит ваш суд? Это может быть сделано непосредственно с помощью mysql или с помощью php.

2. Мне нужен только MySQL без php! смотрите обновление, пожалуйста

Ответ №1:

Поскольку вы создали таблицу country, теперь вы можете создать таблицу sports из таблицы country с теми же столбцами следующим образом

 create table sport as select * from country;
select * from sport;
  

Это просто означает, что будут использоваться все столбцы и строки в таблице country
для создания спортивной таблицы.

Дополнение:

Ваш вопрос как-то сбивает с толку. Если вы говорите о запросе записей отдельно, вы можете использовать идентификатор или название страны

Например, для запроса столбца sports для США как страны, становится

 select name from country where id=1;   or

select * from country where name='USA';
  

следовательно, для запроса столбца sports для Канады как страны становится

 select name from country where id=2;   or

select * from country where name='Canada';
  

Если это не то, что вы хотите, не могли бы вы, пожалуйста, сформулировать свой вопрос так, чтобы мы могли вас понять.

Комментарии:

1. какой скрипт для извлечения «{«»}» для каждой страны, это как цикл, перед созданием таблицы.

2. он извлечет все содержимое таблицы country и создаст с ним таблицу sport

3. Я знаю это, но как разделить все виды спорта внутри столбца: спорт, пожалуйста, посмотрите на мою таблицу стран

4. любой ответ, пожалуйста.

5. Я обновил данный вам ответ. пожалуйста, проверьте ответ выше, чтобы увидеть, решит ли он вашу проблему